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




  <entry>
    <id>https://nostr.ae/nevent1qqsy8t78netemm4j7jxald2wge6nhyk2pw2f9kwq8x0zs4vrv2kzw8czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg30dah9</id>
    
      <title type="html">📅 Original date posted:2022-02-20 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy8t78netemm4j7jxald2wge6nhyk2pw2f9kwq8x0zs4vrv2kzw8czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg30dah9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyc3lc8s5szd5366cc39v7ca7ndq3l5tl6rtqnvecumzuqemdzr9clznwaa&#39;&gt;nevent1q…nwaa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-02-20&lt;br/&gt;📝 Original message:&lt;br/&gt;opt-in or explicit tagging of fee account is a bad design IMO.&lt;br/&gt;&lt;br/&gt;As pointed out by James O&amp;#39;Beirne in the other email, having an explicit key&lt;br/&gt;required means you have to pre-plan.... suppose you&amp;#39;re building a vault&lt;br/&gt;meant to distribute funds over many years, do you really want a *specific*&lt;br/&gt;precommitted key you have to maintain? What happens to your ability to bump&lt;br/&gt;should it be compromised (which may be more likely if it&amp;#39;s intended to be a&lt;br/&gt;hot-wallet function for bumping).&lt;br/&gt;&lt;br/&gt;Furthermore, it&amp;#39;s quite often the case that someone might do a transaction&lt;br/&gt;that pays you that is low fee that you want to bump but they choose to&lt;br/&gt;opt-out... then what? It&amp;#39;s better that you should always be able to fee&lt;br/&gt;bump.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sun, Feb 20, 2022 at 6:24 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning DA,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Agreed, you cannot rely on a replacement transaction would somehow&lt;br/&gt;&amp;gt; &amp;gt; invalidate a previous version of it, it has been spoken into the gossip&lt;br/&gt;&amp;gt; &amp;gt; and exists there in mempools somewhere if it does, there is no guarantee&lt;br/&gt;&amp;gt; &amp;gt; that anyone has ever heard of the replacement transaction as there is no&lt;br/&gt;&amp;gt; &amp;gt; consensus about either the previous version of the transaction or its&lt;br/&gt;&amp;gt; &amp;gt; replacement until one of them is mined and the block accepted. -DA.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As I understand from the followup from Peter, the point is not &amp;#34;this&lt;br/&gt;&amp;gt; should never happen&amp;#34;, rather the point is &amp;#34;this should not happen *more&lt;br/&gt;&amp;gt; often*.&amp;#34;&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;-------------- 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/20220220/ff758812/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220220/ff758812/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:05:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyys82wd7kv5qrm93gdnjpysk095h5t2p8fm8qrsalm5mlp5kws6szyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgcysm3u</id>
    
      <title type="html">📅 Original date posted:2022-01-19 📝 Original message: Ah my ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyys82wd7kv5qrm93gdnjpysk095h5t2p8fm8qrsalm5mlp5kws6szyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgcysm3u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8t2654p2hxhgteusy6dtq3djxat3f2shv626xgnjxnfvlu2mc8sqnzx8y9&#39;&gt;nevent1q…x8y9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-19&lt;br/&gt;📝 Original message:&lt;br/&gt;Ah my bad i misread what you were saying as being about SIGHASH_BUNDLE like&lt;br/&gt;proposals.&lt;br/&gt;&lt;br/&gt;For what you&amp;#39;re discussing, I previously proposed&lt;br/&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;which is similar.&lt;br/&gt;&lt;br/&gt;The benefit of the OP_VER output is that SIGHASH_EXTERNAL has the issue&lt;br/&gt;that unless you&amp;#39;re binding a WTXID (which is maybe too specific?) then you&lt;br/&gt;can have fee bumping cycles. Doing OP_VER output w/ TXID guarantees that&lt;br/&gt;you are acyclic.&lt;br/&gt;&lt;br/&gt;The difference between a fee account and this approach basically boils down&lt;br/&gt;to the impact on e.g. reorg stability, where the deposit/withdraw mechanism&lt;br/&gt;is a bit more &amp;#34;robust&amp;#34; for reorderings in reorgs than the in-band&lt;br/&gt;transaction approach, although they are very similar.&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jan 18, 2022 at 8:53 PM Billy Tetrud &amp;lt;billy.tetrud at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt;  because you make transactions third party malleable it becomes&lt;br/&gt;&amp;gt; possible to bundle and unbundle transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What I was suggesting doesn&amp;#39;t make it possible to malleate someone else&amp;#39;s&lt;br/&gt;&amp;gt; transaction. I guess maybe my proposal of using a sighash flag might have&lt;br/&gt;&amp;gt; been unclear. Imagine it as a script opcode that just says &amp;#34;this&lt;br/&gt;&amp;gt; transaction must be mined with this other transaction&amp;#34; - the only&lt;br/&gt;&amp;gt; difference being that you can use any output with any encumberance as an&lt;br/&gt;&amp;gt; input for fee bumping. It doesn&amp;#39;t prevent the original transaction from&lt;br/&gt;&amp;gt; being mined on its own. So adding junk inputs would be no more of a problem&lt;br/&gt;&amp;gt; than dust attacks already are. It would be used exactly like cpfp, except&lt;br/&gt;&amp;gt; it doesn&amp;#39;t spend the parent.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think what I was suggesting is as different from your proposal.&lt;br/&gt;&amp;gt; All the problems of fee revenue optimization and feerate rules that you&lt;br/&gt;&amp;gt; mentioned seem like they&amp;#39;d also exist for your proposal, or for cpfp. Let&lt;br/&gt;&amp;gt; me know if I should clarify further.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Jan 18, 2022 at 8:51 PM Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The issue with sighash flags is that because you make transactions third&lt;br/&gt;&amp;gt;&amp;gt; party malleable it becomes possible to bundle and unbundle transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This means there are circumstances where an attacker could e.g. see your&lt;br/&gt;&amp;gt;&amp;gt; txn, and then add a lot of junk change/inputs &#43; 25 descendants and strongly&lt;br/&gt;&amp;gt;&amp;gt; anchor your transaction to the bottom of the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; because of rbf rules requiring more fee and feerate, this means you have&lt;br/&gt;&amp;gt;&amp;gt; to bump across the whole package and that can get really messy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; more generally speaking, you could imagine a future where mempools track&lt;br/&gt;&amp;gt;&amp;gt; many alternative things that might want to be in a transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; suppose there are N inputs each with a weight and an amount of fee being&lt;br/&gt;&amp;gt;&amp;gt; added and the sighash flags let me pick any subset of them. However, for a&lt;br/&gt;&amp;gt;&amp;gt; txn to be standard it must be &amp;lt; 100k bytes and for it to be consensus &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; 1mb. Now it is possible you have to solve a knapsack problem in order to&lt;br/&gt;&amp;gt;&amp;gt; rationally bundle this transaction out of all possibilities.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This problem can get even thornier, suppose that the inputs I&amp;#39;m adding&lt;br/&gt;&amp;gt;&amp;gt; themselves are the outputs of another txn in the mempool, now i have to&lt;br/&gt;&amp;gt;&amp;gt; track and propagate the feerates of that child back up to the parent txn&lt;br/&gt;&amp;gt;&amp;gt; and track all these dependencies.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; perhaps with very careful engineering these issues can be tamed. however&lt;br/&gt;&amp;gt;&amp;gt; it seems with sponsors or fee accounts, by separating the pays-for from the&lt;br/&gt;&amp;gt;&amp;gt; participates-in concerns we can greatly simplify it to something like:&lt;br/&gt;&amp;gt;&amp;gt; compute effective feerate for a txn, including all sponsors that pay more&lt;br/&gt;&amp;gt;&amp;gt; than the feerate of the base txn. Mine that txn and it&amp;#39;s subsidies using&lt;br/&gt;&amp;gt;&amp;gt; the normal algo. If you run out of space, all subsidies are same-sized so&lt;br/&gt;&amp;gt;&amp;gt; just take the ones that pay the highest amount up until the added marginal&lt;br/&gt;&amp;gt;&amp;gt; feerate is less than the next eligible txn.&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; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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; On Tue, Jan 18, 2022 at 6:38 PM Billy Tetrud &amp;lt;billy.tetrud 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; I see, its not primarily to make it cheaper to append fees, but also&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; allows appending fees in cases that aren&amp;#39;t possible now. Is that right? I&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; can certainly see the benefit of a more general way to add a fee to any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transaction, regardless of whether you&amp;#39;re related to that transaction or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; not.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; How would you compare the pros and cons of your account-based approach&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to something like a new sighash flag? Eg a sighash flag that says &amp;#34;I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; signing this transaction, but the signature is only valid if mined in the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; same block as transaction X (or maybe transactions LIST)&amp;#34;. This could be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; named SIGHASH_EXTERNAL. Doing this would be a lot more similar to other&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin transactions, and no special account would need to be created. Any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transaction could specify this. At least that&amp;#39;s the first thought I would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; have in designing a way to arbitrarily bump fees. Have you compared your&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; solution to something more familiar like that?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Tue, Jan 18, 2022 at 11:43 AM Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Can you clarify what you mean by &amp;#34;improve the situation&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; There&amp;#39;s a potential mild bytes savings, but the bigger deal is that the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; API should be much less vulnerable to pinning issues, fix dust leakage for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; eltoo like protocols, and just generally allow protocol designs to be fully&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; abstracted from paying fees. You can&amp;#39;t easily mathematically quantify API&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; improvements like that.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&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; On Tue, Jan 18, 2022 at 8:13 AM Billy Tetrud &amp;lt;billy.tetrud 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; Do you have any back-of-the-napkin math on quantifying how much this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; would improve the situation vs existing methods (eg cpfp)?&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;&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 Sat, Jan 1, 2022 at 2:04 PM Jeremy 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; wrote:&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; Happy new years devs,&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 figured I would share some thoughts for conceptual review that have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; been bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m sure could be improved greatly.&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; Transaction fees are an integral part of bitcoin.&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; However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; part of the transactions that they occur in.&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; While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Having the fees paid in band makes writing these contracts much more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction, but also the fees.&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; Previously, I proposed a special type of transaction called a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Sponsor&amp;#34; which has some special consensus &#43; mempool rules to allow&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; arbitrarily appending fees to a transaction to bump it up in the mempool.&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; As an alternative, we could establish an account system in Bitcoin as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an &amp;#34;extension block&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; *Here&amp;#39;s how it might work:*&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. Define a special anyone can spend output type that is a &amp;#34;fee&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; account&amp;#34; (e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; associated with them, but are overall anyone can spend.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2. All deposits to these outputs get stored in a separate UTXO&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; database for fee accounts&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 3. Fee accounts can sign only two kinds of transaction: A: a fee&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; amount and a TXID (or Outpoint?); B: a withdraw amount, a fee, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an address&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 4. These transactions are committed in an extension block merkle&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; tree. While the actual signature must cover the TXID/Outpoint, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; committed data need only cover the index in the block of the transaction.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The public key for account lookup can be recovered from the message &#43;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; signature.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 5. In any block, any of the fee account deposits can be: released&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; into fees if there is a corresponding tx; consolidated together to reduce&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the number of utxos (this can be just an OP_TRUE no metadata needed); or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; released into fees *and paid back* into the requested withdrawal key&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (encumbering a 100 block timeout). Signatures must be unique in a block.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 6. Mempool logic is updated to allow attaching of account fee spends&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to transactions, the mempool can restrict that an account is not allowed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more spend more than it&amp;#39;s balance.&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; *But aren&amp;#39;t accounts &amp;#34;bad&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; Yes, accounts are bad. But these accounts are not bad, because any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; funds withdrawn from the fee extension are fundamentally locked for 100&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; blocks as a coinbase output, so there should be no issues with any series&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of reorgs. Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; state updates can always be applied in a conflict-free way in any order.&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;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Improving the privacy of this design:*&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 design could likely be modified to implement something like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; expense of being a bit more expensive.&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; Other operations could be added to allow a trustless mixing to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; done by miners automatically where groups of accounts with similar values&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; are trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; them with better privacy. While a miner generating an update would be able&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; independent miners that could potentially add sufficient privacy.&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 LN can also be used with PTLCs to, in theory, have another&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; individual paid to sponsor a transaction on your behalf only if they reveal&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; a valid sig from their fee paying account, although under this model it&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hard to ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; withdrawing the rest. However, this could be partly solved by using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; reputable fee accounts (reputation could be measured somewhat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; decentralized-ly by longevity of the account and transactions paid for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; historically).&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; *Scalability*&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 design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fees to a transaction does not require adding inputs or outputs and does&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not require tracking substantial amounts of new state.&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; Paying someone else to pay for you via the LN also helps make this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more efficient if the withdrawal issues can be fixed.&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; *Lightning:*&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 type of design works really well for channels because the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; addition of fees to e.g. a channel state does not require any sort of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; pre-planning (e.g. anchors) or transaction flexibility (SIGHASH flags).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This sort of design is naturally immune to pinning issues since you could&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; offer to pay a fee for any TXID and the number of fee adding offers does&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not need to be restricted in the same way the descendant transactions would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; need to be.&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; *Without a fork?*&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 type of design could be done as a federated network that bribes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; miners -- potentially even retroactively after a block is formed. That&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; might be sufficient to prove the concept works before a consensus upgrade&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; interfering with normal mining.&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;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Happy new year!!&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; Jeremy&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; --&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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; 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;-------------- 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/20220118/862ed586/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220118/862ed586/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:04:59&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqnzq0wnggm2ue88e86tc8xnk4gc55lx2ty68fv52qgt8usr3e7pszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgfn5rkh</id>
    
      <title type="html">📅 Original date posted:2022-01-19 📝 Original message: The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqnzq0wnggm2ue88e86tc8xnk4gc55lx2ty68fv52qgt8usr3e7pszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgfn5rkh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqgw82zcrf7tgd2ewr9yrtgkj7r8pe27djct7kn4y3w8qq6u9409stn5gxt&#39;&gt;nevent1q…5gxt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-19&lt;br/&gt;📝 Original message:&lt;br/&gt;The issue with sighash flags is that because you make transactions third&lt;br/&gt;party malleable it becomes possible to bundle and unbundle transactions.&lt;br/&gt;&lt;br/&gt;This means there are circumstances where an attacker could e.g. see your&lt;br/&gt;txn, and then add a lot of junk change/inputs &#43; 25 descendants and strongly&lt;br/&gt;anchor your transaction to the bottom of the mempool.&lt;br/&gt;&lt;br/&gt;because of rbf rules requiring more fee and feerate, this means you have to&lt;br/&gt;bump across the whole package and that can get really messy.&lt;br/&gt;&lt;br/&gt;more generally speaking, you could imagine a future where mempools track&lt;br/&gt;many alternative things that might want to be in a transaction.&lt;br/&gt;&lt;br/&gt;suppose there are N inputs each with a weight and an amount of fee being&lt;br/&gt;added and the sighash flags let me pick any subset of them. However, for a&lt;br/&gt;txn to be standard it must be &amp;lt; 100k bytes and for it to be consensus &amp;lt;&lt;br/&gt;1mb. Now it is possible you have to solve a knapsack problem in order to&lt;br/&gt;rationally bundle this transaction out of all possibilities.&lt;br/&gt;&lt;br/&gt;This problem can get even thornier, suppose that the inputs I&amp;#39;m adding&lt;br/&gt;themselves are the outputs of another txn in the mempool, now i have to&lt;br/&gt;track and propagate the feerates of that child back up to the parent txn&lt;br/&gt;and track all these dependencies.&lt;br/&gt;&lt;br/&gt;perhaps with very careful engineering these issues can be tamed. however it&lt;br/&gt;seems with sponsors or fee accounts, by separating the pays-for from the&lt;br/&gt;participates-in concerns we can greatly simplify it to something like:&lt;br/&gt;compute effective feerate for a txn, including all sponsors that pay more&lt;br/&gt;than the feerate of the base txn. Mine that txn and it&amp;#39;s subsidies using&lt;br/&gt;the normal algo. If you run out of space, all subsidies are same-sized so&lt;br/&gt;just take the ones that pay the highest amount up until the added marginal&lt;br/&gt;feerate is less than the next eligible txn.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jan 18, 2022 at 6:38 PM Billy Tetrud &amp;lt;billy.tetrud at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I see, its not primarily to make it cheaper to append fees, but also&lt;br/&gt;&amp;gt; allows appending fees in cases that aren&amp;#39;t possible now. Is that right? I&lt;br/&gt;&amp;gt; can certainly see the benefit of a more general way to add a fee to any&lt;br/&gt;&amp;gt; transaction, regardless of whether you&amp;#39;re related to that transaction or&lt;br/&gt;&amp;gt; not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; How would you compare the pros and cons of your account-based approach to&lt;br/&gt;&amp;gt; something like a new sighash flag? Eg a sighash flag that says &amp;#34;I&amp;#39;m signing&lt;br/&gt;&amp;gt; this transaction, but the signature is only valid if mined in the same&lt;br/&gt;&amp;gt; block as transaction X (or maybe transactions LIST)&amp;#34;. This could be named&lt;br/&gt;&amp;gt; SIGHASH_EXTERNAL. Doing this would be a lot more similar to other bitcoin&lt;br/&gt;&amp;gt; transactions, and no special account would need to be created. Any&lt;br/&gt;&amp;gt; transaction could specify this. At least that&amp;#39;s the first thought I would&lt;br/&gt;&amp;gt; have in designing a way to arbitrarily bump fees. Have you compared your&lt;br/&gt;&amp;gt; solution to something more familiar like that?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Jan 18, 2022 at 11:43 AM Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Can you clarify what you mean by &amp;#34;improve the situation&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There&amp;#39;s a potential mild bytes savings, but the bigger deal is that the&lt;br/&gt;&amp;gt;&amp;gt; API should be much less vulnerable to pinning issues, fix dust leakage for&lt;br/&gt;&amp;gt;&amp;gt; eltoo like protocols, and just generally allow protocol designs to be fully&lt;br/&gt;&amp;gt;&amp;gt; abstracted from paying fees. You can&amp;#39;t easily mathematically quantify API&lt;br/&gt;&amp;gt;&amp;gt; improvements like that.&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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; On Tue, Jan 18, 2022 at 8:13 AM Billy Tetrud &amp;lt;billy.tetrud 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; Do you have any back-of-the-napkin math on quantifying how much this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; would improve the situation vs existing methods (eg cpfp)?&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; On Sat, Jan 1, 2022 at 2:04 PM Jeremy 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; Happy new years devs,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I figured I would share some thoughts for conceptual review that have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; been bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m sure could be improved greatly.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Transaction fees are an integral part of bitcoin.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a part&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of the transactions that they occur in.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Having the fees paid in band makes writing these contracts much more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction, but also the fees.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Previously, I proposed a special type of transaction called a &amp;#34;Sponsor&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; which has some special consensus &#43; mempool rules to allow arbitrarily&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; appending fees to a transaction to bump it up in the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As an alternative, we could establish an account system in Bitcoin as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an &amp;#34;extension block&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Here&amp;#39;s how it might work:*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 1. Define a special anyone can spend output type that is a &amp;#34;fee&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; account&amp;#34; (e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; associated with them, but are overall anyone can spend.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2. All deposits to these outputs get stored in a separate UTXO database&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for fee accounts&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 3. Fee accounts can sign only two kinds of transaction: A: a fee amount&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and a TXID (or Outpoint?); B: a withdraw amount, a fee, and an address&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 4. These transactions are committed in an extension block merkle tree.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; While the actual signature must cover the TXID/Outpoint, the committed data&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; need only cover the index in the block of the transaction. The public key&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for account lookup can be recovered from the message &#43; signature.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 5. In any block, any of the fee account deposits can be: released into&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fees if there is a corresponding tx; consolidated together to reduce the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; number of utxos (this can be just an OP_TRUE no metadata needed); or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; released into fees *and paid back* into the requested withdrawal key&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (encumbering a 100 block timeout). Signatures must be unique in a block.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 6. Mempool logic is updated to allow attaching of account fee spends to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions, the mempool can restrict that an account is not allowed more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; spend more than it&amp;#39;s balance.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *But aren&amp;#39;t accounts &amp;#34;bad&amp;#34;?*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yes, accounts are bad. But these accounts are not bad, because any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; funds withdrawn from the fee extension are fundamentally locked for 100&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; blocks as a coinbase output, so there should be no issues with any series&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of reorgs. Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; state updates can always be applied in a conflict-free way in any order.&lt;br/&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; *Improving the privacy of this design:*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This design could likely be modified to implement something like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; expense of being a bit more expensive.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Other operations could be added to allow a trustless mixing to be done&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; by miners automatically where groups of accounts with similar values are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; them with better privacy. While a miner generating an update would be able&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; independent miners that could potentially add sufficient privacy.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The LN can also be used with PTLCs to, in theory, have another&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; individual paid to sponsor a transaction on your behalf only if they reveal&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; a valid sig from their fee paying account, although under this model it&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hard to ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; withdrawing the rest. However, this could be partly solved by using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; reputable fee accounts (reputation could be measured somewhat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; decentralized-ly by longevity of the account and transactions paid for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; historically).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Scalability*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fees to a transaction does not require adding inputs or outputs and does&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not require tracking substantial amounts of new state.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Paying someone else to pay for you via the LN also helps make this more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; efficient if the withdrawal issues can be fixed.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Lightning:*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This type of design works really well for channels because the addition&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of fees to e.g. a channel state does not require any sort of pre-planning&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (e.g. anchors) or transaction flexibility (SIGHASH flags). This sort of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; design is naturally immune to pinning issues since you could offer to pay a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fee for any TXID and the number of fee adding offers does not need to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; restricted in the same way the descendant transactions would need to be.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Without a fork?*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This type of design could be done as a federated network that bribes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; miners -- potentially even retroactively after a block is formed. That&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; might be sufficient to prove the concept works before a consensus upgrade&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; interfering with normal mining.&lt;br/&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; Happy new year!!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Jeremy&lt;br/&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; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&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/lightning-dev/attachments/20220118/bde037b2/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220118/bde037b2/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:04:58&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspsdskkktwnzr50qtant4zyr0mqwz07awtzfeedn93uhvjcftghkqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tglhmnrl</id>
    
      <title type="html">📅 Original date posted:2022-01-18 📝 Original message: Can ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspsdskkktwnzr50qtant4zyr0mqwz07awtzfeedn93uhvjcftghkqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tglhmnrl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxhh4nd9n97pkzqxrwjq3w2xuplzwgvlyftywdkfrulsamj0733aqpwx5d7&#39;&gt;nevent1q…x5d7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-18&lt;br/&gt;📝 Original message:&lt;br/&gt;Can you clarify what you mean by &amp;#34;improve the situation&amp;#34;?&lt;br/&gt;&lt;br/&gt;There&amp;#39;s a potential mild bytes savings, but the bigger deal is that the API&lt;br/&gt;should be much less vulnerable to pinning issues, fix dust leakage for&lt;br/&gt;eltoo like protocols, and just generally allow protocol designs to be fully&lt;br/&gt;abstracted from paying fees. You can&amp;#39;t easily mathematically quantify API&lt;br/&gt;improvements like that.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jan 18, 2022 at 8:13 AM Billy Tetrud &amp;lt;billy.tetrud at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Do you have any back-of-the-napkin math on quantifying how much this would&lt;br/&gt;&amp;gt; improve the situation vs existing methods (eg cpfp)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sat, Jan 1, 2022 at 2:04 PM Jeremy 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; Happy new years devs,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I figured I would share some thoughts for conceptual review that have&lt;br/&gt;&amp;gt;&amp;gt; been bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;&amp;gt;&amp;gt; semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;&amp;gt;&amp;gt; approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;m sure could be improved greatly.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Transaction fees are an integral part of bitcoin.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a part&lt;br/&gt;&amp;gt;&amp;gt; of the transactions that they occur in.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;&amp;gt;&amp;gt; simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;&amp;gt;&amp;gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;&amp;gt;&amp;gt; and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;&amp;gt;&amp;gt; Having the fees paid in band makes writing these contracts much more&lt;br/&gt;&amp;gt;&amp;gt; difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;&amp;gt;&amp;gt; transaction, but also the fees.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Previously, I proposed a special type of transaction called a &amp;#34;Sponsor&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; which has some special consensus &#43; mempool rules to allow arbitrarily&lt;br/&gt;&amp;gt;&amp;gt; appending fees to a transaction to bump it up in the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As an alternative, we could establish an account system in Bitcoin as an&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;extension block&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Here&amp;#39;s how it might work:*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. Define a special anyone can spend output type that is a &amp;#34;fee account&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; (e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;&amp;gt;&amp;gt; associated with them, but are overall anyone can spend.&lt;br/&gt;&amp;gt;&amp;gt; 2. All deposits to these outputs get stored in a separate UTXO database&lt;br/&gt;&amp;gt;&amp;gt; for fee accounts&lt;br/&gt;&amp;gt;&amp;gt; 3. Fee accounts can sign only two kinds of transaction: A: a fee amount&lt;br/&gt;&amp;gt;&amp;gt; and a TXID (or Outpoint?); B: a withdraw amount, a fee, and an address&lt;br/&gt;&amp;gt;&amp;gt; 4. These transactions are committed in an extension block merkle tree.&lt;br/&gt;&amp;gt;&amp;gt; While the actual signature must cover the TXID/Outpoint, the committed data&lt;br/&gt;&amp;gt;&amp;gt; need only cover the index in the block of the transaction. The public key&lt;br/&gt;&amp;gt;&amp;gt; for account lookup can be recovered from the message &#43; signature.&lt;br/&gt;&amp;gt;&amp;gt; 5. In any block, any of the fee account deposits can be: released into&lt;br/&gt;&amp;gt;&amp;gt; fees if there is a corresponding tx; consolidated together to reduce the&lt;br/&gt;&amp;gt;&amp;gt; number of utxos (this can be just an OP_TRUE no metadata needed); or&lt;br/&gt;&amp;gt;&amp;gt; released into fees *and paid back* into the requested withdrawal key&lt;br/&gt;&amp;gt;&amp;gt; (encumbering a 100 block timeout). Signatures must be unique in a block.&lt;br/&gt;&amp;gt;&amp;gt; 6. Mempool logic is updated to allow attaching of account fee spends to&lt;br/&gt;&amp;gt;&amp;gt; transactions, the mempool can restrict that an account is not allowed more&lt;br/&gt;&amp;gt;&amp;gt; spend more than it&amp;#39;s balance.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *But aren&amp;#39;t accounts &amp;#34;bad&amp;#34;?*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Yes, accounts are bad. But these accounts are not bad, because any funds&lt;br/&gt;&amp;gt;&amp;gt; withdrawn from the fee extension are fundamentally locked for 100 blocks as&lt;br/&gt;&amp;gt;&amp;gt; a coinbase output, so there should be no issues with any series of reorgs.&lt;br/&gt;&amp;gt;&amp;gt; Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the state&lt;br/&gt;&amp;gt;&amp;gt; updates can always be applied in a conflict-free way in any order.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Improving the privacy of this design:*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This design could likely be modified to implement something like&lt;br/&gt;&amp;gt;&amp;gt; Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;&amp;gt;&amp;gt; unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;&amp;gt;&amp;gt; expense of being a bit more expensive.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Other operations could be added to allow a trustless mixing to be done by&lt;br/&gt;&amp;gt;&amp;gt; miners automatically where groups of accounts with similar values are&lt;br/&gt;&amp;gt;&amp;gt; trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;&amp;gt;&amp;gt; derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;&amp;gt;&amp;gt; be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;&amp;gt;&amp;gt; produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;&amp;gt;&amp;gt; them with better privacy. While a miner generating an update would be able&lt;br/&gt;&amp;gt;&amp;gt; to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;&amp;gt;&amp;gt; independent miners that could potentially add sufficient privacy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The LN can also be used with PTLCs to, in theory, have another individual&lt;br/&gt;&amp;gt;&amp;gt; paid to sponsor a transaction on your behalf only if they reveal a valid&lt;br/&gt;&amp;gt;&amp;gt; sig from their fee paying account, although under this model it&amp;#39;s hard to&lt;br/&gt;&amp;gt;&amp;gt; ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by withdrawing&lt;br/&gt;&amp;gt;&amp;gt; the rest. However, this could be partly solved by using reputable fee&lt;br/&gt;&amp;gt;&amp;gt; accounts (reputation could be measured somewhat decentralized-ly by&lt;br/&gt;&amp;gt;&amp;gt; longevity of the account and transactions paid for historically).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Scalability*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding fees&lt;br/&gt;&amp;gt;&amp;gt; to a transaction does not require adding inputs or outputs and does not&lt;br/&gt;&amp;gt;&amp;gt; require tracking substantial amounts of new state.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Paying someone else to pay for you via the LN also helps make this more&lt;br/&gt;&amp;gt;&amp;gt; efficient if the withdrawal issues can be fixed.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Lightning:*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This type of design works really well for channels because the addition&lt;br/&gt;&amp;gt;&amp;gt; of fees to e.g. a channel state does not require any sort of pre-planning&lt;br/&gt;&amp;gt;&amp;gt; (e.g. anchors) or transaction flexibility (SIGHASH flags). This sort of&lt;br/&gt;&amp;gt;&amp;gt; design is naturally immune to pinning issues since you could offer to pay a&lt;br/&gt;&amp;gt;&amp;gt; fee for any TXID and the number of fee adding offers does not need to be&lt;br/&gt;&amp;gt;&amp;gt; restricted in the same way the descendant transactions would need to be.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Without a fork?*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This type of design could be done as a federated network that bribes&lt;br/&gt;&amp;gt;&amp;gt; miners -- potentially even retroactively after a block is formed. That&lt;br/&gt;&amp;gt;&amp;gt; might be sufficient to prove the concept works before a consensus upgrade&lt;br/&gt;&amp;gt;&amp;gt; is deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;&amp;gt;&amp;gt; interfering with normal mining.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Happy new year!!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Jeremy&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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;-------------- 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/20220118/d8324802/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20220118/d8324802/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:04:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsd39jga9rv7eyc9y2fq6cqmtzscncs98y0ds9f6974ehm66m9v4lczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg8yz60g</id>
    
      <title type="html">📅 Original date posted:2021-11-29 📝 Original message: Just ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsd39jga9rv7eyc9y2fq6cqmtzscncs98y0ds9f6974ehm66m9v4lczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg8yz60g" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0n560z9gsm35e93cp8mwgvrjvzkny7tq7gvt7e0a7yrt9lgh6gsge0kqry&#39;&gt;nevent1q…kqry&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-11-29&lt;br/&gt;📝 Original message:&lt;br/&gt;Just a minor curiosity I figured was worth mentioning on the composition of&lt;br/&gt;delegations and anyprevout...&lt;br/&gt;&lt;br/&gt;DA: Let full delegation be a script S such that I can sign script R and&lt;br/&gt;then R may sign for a transaction T.&lt;br/&gt;DB: Let partial delegation be a script S such that I can sign a tuple&lt;br/&gt;(script R, transaction T) and R may sign T.&lt;br/&gt;&lt;br/&gt;A simple version of this could be done for scriptless multisigs where S&lt;br/&gt;signs T and then onion encrypts to the signers of R and distributes the&lt;br/&gt;shares. However, under such a model, if T is signed by S with AnyPrevOut,&lt;br/&gt;then T is now arbitrarily rebindable. Therefore let us define more strictly:&lt;br/&gt;DC: Let half-delegation be a script S such that I can sign a tuple (script&lt;br/&gt;R, transaction T) and R may sign T and revealing T/R does grant&lt;br/&gt;authorization to any other party.&lt;br/&gt;&lt;br/&gt;The signer of R could choose to sign with APO, in which case they make the&lt;br/&gt;txn rebindable. They could also reveal the private keys for R similarly.&lt;br/&gt;For &amp;#34;correct&amp;#34; use, R should sign with SIGHASH_ALL, binding the transaction&lt;br/&gt;to a single instance.&lt;br/&gt;&lt;br/&gt;Observation: a tuple script R &#43; transaction T can, in many cases, be&lt;br/&gt;represented by script R || &amp;lt;H(transaction T)&amp;gt; CTV.&lt;br/&gt;Corollary: half-delegation can be derived from full delegation and a&lt;br/&gt;covenant.&lt;br/&gt;&lt;br/&gt;Therefore delegation &#43; CTV &#43; APO may be sufficient for making chaperone&lt;br/&gt;signatures work, if they are desired by a user.&lt;br/&gt;&lt;br/&gt;Remarks:&lt;br/&gt;&lt;br/&gt;APO&amp;#39;s design discussion should not revisit Chaperone signatures (hopefully&lt;br/&gt;already a dead horse?) but instead consider how APO might compose with&lt;br/&gt;Delegation proposals and CTV.&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/lightning-dev/attachments/20211129/a63d9d54/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20211129/a63d9d54/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:04:30&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr79fndjfrlw0frld38l9pmvv40ftznljsw7vc908ztxcarayqpuqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgkejkch</id>
    
      <title type="html">📅 Original date posted:2021-07-27 📝 Original message: Just ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr79fndjfrlw0frld38l9pmvv40ftznljsw7vc908ztxcarayqpuqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgkejkch" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2le5pcglhe308k9tl3n52hsemkhtty869h70s2nfpu05a9x58trchzgvsl&#39;&gt;nevent1q…gvsl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-27&lt;br/&gt;📝 Original message:&lt;br/&gt;Just my 2 cents:&lt;br/&gt;&lt;br/&gt;I think worrying about the size of a resolution during a contested close&lt;br/&gt;scenario (too much) is not worth it. Encoding the state needed (e.g., in&lt;br/&gt;op_return or whatever) is the safest option because then you guarantee the&lt;br/&gt;availability of the closing transaction data in the protocol with no&lt;br/&gt;external dependencies.&lt;br/&gt;&lt;br/&gt;If you want to make it cheaper, then allow for Alice to choose to cooperate&lt;br/&gt;with a contesting Bob to replace the transaction with something smaller&lt;br/&gt;(quibble: we should get rid of mempool absolute fee increase rule for RBF&lt;br/&gt;perhaps... otherwise, this should be done as pre-broadcast negotiation)&lt;br/&gt;after observing the state published by Bob, but make it mandatory to at&lt;br/&gt;least reveal it if Bob wants to use the transaction unilaterally.&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/20210727/aa52c40e/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210727/aa52c40e/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:03:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgqu06us0ux2tjyac28uqgjf4f6ctpr6twt4x3ed8mfl30jsntpwszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg9q2egk</id>
    
      <title type="html">📅 Original date posted:2021-07-10 📝 Original message: ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgqu06us0ux2tjyac28uqgjf4f6ctpr6twt4x3ed8mfl30jsntpwszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg9q2egk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgk66je7vwkfmcsstmq2jsk9dukcrd55xcsncm5mel3junuk5pc7shrgl6a&#39;&gt;nevent1q…gl6a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-10&lt;br/&gt;📝 Original message:&lt;br/&gt;Let&amp;#39;s say you&amp;#39;re about to hit your sequence limits on a Eltoo channel... Do&lt;br/&gt;you have to go on chain?&lt;br/&gt;&lt;br/&gt;No, you could do a continuation where for your *final* update, you sign a&lt;br/&gt;move to a new update key. E.g.,&lt;br/&gt;&lt;br/&gt;start at: IF &amp;#34;N&#43;1&amp;#34; CLTV DROP &amp;lt;pk_u&amp;gt; CHECKSIG  ELSE 2016 CSV DROP &amp;lt;pk_s_i&amp;gt;&lt;br/&gt;CHECKSIG ENDIF&lt;br/&gt;&lt;br/&gt;before N&#43;1 = last, sign a txn with pk_s_last that moves coins to&lt;br/&gt;&lt;br/&gt;IF &amp;#34;1&amp;#34; CLTV DROP &amp;lt;*pk_u**2*&amp;gt; CHECKSIG  ELSE 2016 CSV DROP &amp;lt;pk_s_i&amp;gt; CHECKSIG&lt;br/&gt;ENDIF&lt;br/&gt;&lt;br/&gt;This essentially lets you do 32 bits worth of updates and then fwd to a new&lt;br/&gt;contract by paying 1x extra transaction.&lt;br/&gt;&lt;br/&gt;This is potentially better than just directly closing because we keep it&lt;br/&gt;off chain for longer.  However... this also adds an additional CSV.&lt;br/&gt;&lt;br/&gt;(We can get around this by modifying the script branch which ends a CLTV&lt;br/&gt;domain with:&lt;br/&gt;&amp;lt;pk_s_last&amp;gt; CHECKSIG&lt;br/&gt;since any updates past that point are done through the continuation&lt;br/&gt;state... but let&amp;#39;s ignore that for the next part)&lt;br/&gt;&lt;br/&gt;What if we *always* used this every update? Then we&amp;#39;d essentially have 64&lt;br/&gt;bits of sequence space. Each layer of this trick adds 32 bytes.&lt;br/&gt;&lt;br/&gt;Doing layers like this inherently adds a bunch of CSV layers, so it&lt;br/&gt;increases resolution time linearly.&lt;br/&gt;&lt;br/&gt;One possibility to mitigate this is to do a &amp;#34;semitrusted burst mode&amp;#34; with a&lt;br/&gt;counterparty. Suppose you&amp;#39;re at sequence M and it&amp;#39;s a normal txn.&lt;br/&gt;&lt;br/&gt;Party A requests to Party B to initiate burst mode. A and B move to&lt;br/&gt;sequence M&#43;1 where state M&#43;1 passes through to a 2 step Eltoo update.&lt;br/&gt;&lt;br/&gt;This burst now has 32 bits of sequences to blow through.&lt;br/&gt;&lt;br/&gt;B or A then indicates to the other party to terminate the burst at&lt;br/&gt;&amp;#34;internal state number&amp;#34; Q. Then B and A sign M&#43;2 where M&#43;2 reflects the&lt;br/&gt;last state at internal state number Q. This gets rid of the temporary extra&lt;br/&gt;locking time for when parties are offline.&lt;br/&gt;&lt;br/&gt;This has a benefit for privacy as well because if this protocol is used,&lt;br/&gt;then top level state numbers do not reflect the # of payments strongly as&lt;br/&gt;they&amp;#39;re more akin to how many burst mode payments were done.&lt;br/&gt;&lt;br/&gt;The semi trusted nature of this is that if a malicious peer induces you&lt;br/&gt;into starting this, you double your funds lockup time. There are some&lt;br/&gt;mitigations:&lt;br/&gt;&lt;br/&gt;1) Only enter burst mode with long lived peers&lt;br/&gt;2) Only enter burst mode when initiator has more funds in the channel than&lt;br/&gt;you (or has some ratio) which imposes an opportunity cost for attacking.&lt;br/&gt;3) Only allow a certain % of liquidity to be moved during a burst -- e.g.,&lt;br/&gt;any time the delta in balance goes above a threshold, force a higher order&lt;br/&gt;channel state update.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/lightning-dev/attachments/20210710/1267b270/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210710/1267b270/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:03:06&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrxk6awu24v24gp94eej9dxwjgk0k336t6cj5eezzhsff0kczj98czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgr9w0rd</id>
    
      <title type="html">📅 Original date posted:2020-06-20 📝 Original message: I am ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrxk6awu24v24gp94eej9dxwjgk0k336t6cj5eezzhsff0kczj98czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgr9w0rd" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf976rxc7m2tdmd4e00smzemlufe4j03q3uznu5vhj5u8zqq8y2rcrtas98&#39;&gt;nevent1q…as98&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-06-20&lt;br/&gt;📝 Original message:&lt;br/&gt;I am not steeped enough in Lightning Protocol issues to get the full design&lt;br/&gt;space, but I&amp;#39;m fairly certain BIP-119 Congestion Control trees would help&lt;br/&gt;with this issue.&lt;br/&gt;&lt;br/&gt;You can bucket a tree by doing a histogram of HTLC size, so that all small&lt;br/&gt;HTLCs live in a common CTV subtree and don&amp;#39;t interfere with higher value&lt;br/&gt;HTLCs. You can also play with sequencing to prevent those HTLCs from&lt;br/&gt;getting longchains in the mempool until they&amp;#39;re above a certain value.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Thu, Jun 18, 2020 at 1:41 AM Antoine Riard &amp;lt;antoine.riard at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Rene,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks for disclosing this vulnerability,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this blackmail scenario holds but sadly there is a lower scenario.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Both &amp;#34;Flood &amp;amp; Loot&amp;#34; and your blackmail attack rely on `update_fee`&lt;br/&gt;&amp;gt; mechanism and unbounded commitment transaction size inflation. Though the&lt;br/&gt;&amp;gt; first to provoke block congestion and yours to lockdown in-flight fees as&lt;br/&gt;&amp;gt; funds hostage situation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1. The current solution is to just not use up the max value of&lt;br/&gt;&amp;gt; htlc&amp;#39;s. Eclaire and c-lightning by default only use up to 30 htlcs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As of today, yes I would recommend capping commitment size both for&lt;br/&gt;&amp;gt; ensuring competitive propagation/block selection and limiting HTLC exposure.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2. Probably the best fix (not sure if I understand the consequences&lt;br/&gt;&amp;gt; correctly) is coming from this PR to bitcoin core (c.f.&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15681&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15681&lt;/a&gt; by @TheBlueMatt . If I get&lt;br/&gt;&amp;gt; it correctly with that we could always have low fees and ask the person who&lt;br/&gt;&amp;gt; want to claim their outputs to pay fees. This excludes overpayment and&lt;br/&gt;&amp;gt; could happen at a later stage when fees are not spiked. Still the victim&lt;br/&gt;&amp;gt; who offered the htlcs would have to spend those outputs at some time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It&amp;#39;s a bit more complex, carve-out output, even combined with anchor&lt;br/&gt;&amp;gt; output support on the LN-side won&amp;#39;t protect against different flavors of&lt;br/&gt;&amp;gt; pinning. I invite you to go through logs of past 2 LN dev meetings.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 3. Don&amp;#39;t overpay fees in commitment transactions. We can&amp;#39;t foresee the&lt;br/&gt;&amp;gt; future anyway&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Once 2. is well-addressed we may deprecate `update_fee`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 4. Don&amp;#39;t add htlcs for which the on chain fee is higher than the HTLCs&lt;br/&gt;&amp;gt; value (like we do with sub dust amounts and sub satoshi amounts. This would&lt;br/&gt;&amp;gt; at least make the attack expensive as the attacker would have to bind a lot&lt;br/&gt;&amp;gt; of liquidity.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ideally we want dust_limit to be dynamic, dust cap should be based on HTLC&lt;br/&gt;&amp;gt; economic value, feerate of its output, feerate of HTLC-transaction, feerate&lt;br/&gt;&amp;gt; estimation of any CPFP to bump it. I think that&amp;#39;s kind of worthy to do once&lt;br/&gt;&amp;gt; we solved 3. and 4&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 5. Somehow be able to aggregate htlc&amp;#39;s. In a world where we use payment&lt;br/&gt;&amp;gt; points instead of preimages we might be able to do so. It would be really&lt;br/&gt;&amp;gt; cool if separate HTLC&amp;#39;s could be combined to 1 single output. I played&lt;br/&gt;&amp;gt; around a little bit but I have not come up with a scheme that is more&lt;br/&gt;&amp;gt; compact in all cases. Thus I just threw in the idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yes we may encode all HTLC in some Taproot tree in the future. There are&lt;br/&gt;&amp;gt; some wrinkles but for a high-level theoretical construction see my post on&lt;br/&gt;&amp;gt; CoinPool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 6. Split onchain fees differently (now the attacker would also lose fees&lt;br/&gt;&amp;gt; by conducting this attack) - No I don&amp;#39;t want to start yet another fee&lt;br/&gt;&amp;gt; bikeshadding debate. (In particular I believe that a different split of&lt;br/&gt;&amp;gt; fees might make the Flood &amp;amp; Loot attack economically more viable which&lt;br/&gt;&amp;gt; relies on the same principle)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Likely a bit more of fee bikeshedding is something we have to do to make&lt;br/&gt;&amp;gt; LN secure... Switching fee from pre-committed ones to a single-party,&lt;br/&gt;&amp;gt; dynamic one.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Independently I think we should have a hint in our readme file about&lt;br/&gt;&amp;gt; where and how people can disclose attacks and vulnerabilities.&lt;br/&gt;&amp;gt; Implementations have this but the BOLTs do not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I 100% agree, that&amp;#39;s exactly&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/lightningnetwork/lightning-rfc/pull/772&#34;&gt;https://github.com/lightningnetwork/lightning-rfc/pull/772&lt;/a&gt;, waiting for&lt;br/&gt;&amp;gt; your feedback :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Antoine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Le mer. 17 juin 2020 à 09:41, ZmnSCPxj via Lightning-dev &amp;lt;&lt;br/&gt;&amp;gt; lightning-dev at lists.linuxfoundation.org&amp;gt; a écrit :&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Good morning all,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Fee futures could help against this.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; I remember writing about this some time ago but cannot find where (not&lt;br/&gt;&amp;gt;&amp;gt; sure if it was in lightning-dev or bitcoin-dev).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; `harding` found it:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017601.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017601.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt;&amp;gt; ZmnSCPxj&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/20200620/3c0b6b52/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20200620/3c0b6b52/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T15:00:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswdg2qqcf6qx7g43eupfr3sr8we7y3uesv05cxrh64ehs9jt2dhrszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgl489qc</id>
    
      <title type="html">📅 Original date posted:2021-08-10 📝 Original message: You ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswdg2qqcf6qx7g43eupfr3sr8we7y3uesv05cxrh64ehs9jt2dhrszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgl489qc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxqp8rp47jm08hf9ysthheut7lr47sfjjs37xmm5rfrvry0xtc0pq74exh0&#39;&gt;nevent1q…exh0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-10&lt;br/&gt;📝 Original message:&lt;br/&gt;You might be interested in &lt;a href=&#34;https://eprint.iacr.org/2017/1066.pdf&#34;&gt;https://eprint.iacr.org/2017/1066.pdf&lt;/a&gt; which&lt;br/&gt;claims that you can make CT computationally hiding and binding, see section&lt;br/&gt;4.6.&lt;br/&gt;&lt;br/&gt;with respect to utreexo, you might review&lt;br/&gt;&lt;a href=&#34;https://github.com/mit-dci/utreexo/discussions/249?sort=new&#34;&gt;https://github.com/mit-dci/utreexo/discussions/249?sort=new&lt;/a&gt; which discusses&lt;br/&gt;tradeoffs between different accumulator designs. With a swap tree, old&lt;br/&gt;things that never move more or less naturally &amp;#34;fall leftward&amp;#34;, although&lt;br/&gt;there are reasons to prefer alternative designs.&lt;br/&gt;&lt;br/&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/20210809/b93d8107/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210809/b93d8107/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:40:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqukd82av9ltknjvxq8stlexx7hx347te65mgl9esk6zghqzj2sfczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgyu7cgg</id>
    
      <title type="html">📅 Original date posted:2021-08-08 📝 Original message: some ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqukd82av9ltknjvxq8stlexx7hx347te65mgl9esk6zghqzj2sfczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgyu7cgg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxgevupnyjt96hsgdpayx4vjyy83qfju9ru9yaplpwnzmjklhrdaqkt5ude&#39;&gt;nevent1q…5ude&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-08&lt;br/&gt;📝 Original message:&lt;br/&gt;some additional answers/clarifications&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Question for Jeremy: would you also allow zero-value outputs?  Or would&lt;br/&gt;&amp;gt; you just move the dust limit down to a fixed 1-sat?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I would remove it entirely -- i don&amp;#39;t think there&amp;#39;s a difference between&lt;br/&gt;the two realistically.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Allowing 0-value or 1-sat outputs minimizes the cost for polluting the&lt;br/&gt;&amp;gt; UTXO set during periods of low feerates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;Maybe that incentivizes people to make better use of the low&lt;br/&gt;feerate periods to do more important work like consolidations so that&lt;br/&gt;others do not have the opportunity to pollute (therefore eliminating the&lt;br/&gt;low fee period ;)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; If your stuff is going to slow down my node and possibly reduce my&lt;br/&gt;&amp;gt; censorship resistance, how is that not my business?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;You don&amp;#39;t know that&amp;#39;s what I&amp;#39;m doing, it&amp;#39;s a guess as to my future behavior.&lt;br/&gt;&lt;br/&gt;If it weren&amp;#39;t worth it to me, I wouldn&amp;#39;t be doing it. Market will solve&lt;br/&gt;what is worth v.s. not worth.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2) dust outputs can be used in various authentication/delegation smart&lt;br/&gt;&amp;gt; &amp;gt; contracts&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; All of which can also use amounts that are economically rational to&lt;br/&gt;&amp;gt; spend on their own.  If you&amp;#39;re gonna use the chain for something besides&lt;br/&gt;&amp;gt; value transfer, and you&amp;#39;re already wiling to pay X in fees per onchain&lt;br/&gt;&amp;gt; use, why is it not reasonable for us to ask you to put up something on&lt;br/&gt;&amp;gt; the order of X as a bond that you&amp;#39;ll actually clean up your mess when&lt;br/&gt;&amp;gt; you&amp;#39;re no longer interested in your thing?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;These authentication/delegation smart contracts can be a part of value&lt;br/&gt;transfer e.g. some type of atomic swaps or other escrowed payment.&lt;br/&gt;&lt;br/&gt;A bond to clean it up is a fair reason; but perhaps in a protocol it might&lt;br/&gt;not make sense to clean up the utxo otherwise and so you&amp;#39;re creating a&lt;br/&gt;cleanup transaction (potentially has to be presigned in a way it can&amp;#39;t be&lt;br/&gt;done as a consolidation) and then some future consolidation to make the&lt;br/&gt;dusts&#43;eps aggregately convenient to spend. So you&amp;#39;d be trading a decent&lt;br/&gt;amount more chainspace v.s. just ignoring the output and writing it to disk&lt;br/&gt;and maybe eventually into a utreexo (e.g. imagine utreexo where the last N&lt;br/&gt;years of outputs are held in memory, but eventually things get tree&amp;#39;d up)&lt;br/&gt;so the long term costs need not be entirely bourne in permanent storage.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Nope, nothing is forced.  Any LN node can simply refuse to accept/route&lt;br/&gt;&amp;gt; HTLCs below the dust limit.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;d love to hear some broad thoughts on the impact of this on routing (cc&lt;br/&gt;Tarun who thinks about these things a decent amount) as this means for&lt;br/&gt;things like multipath routes you have much stricter constraints on which&lt;br/&gt;nodes you can route payments through. The impact on capacity from every&lt;br/&gt;user&amp;#39;s pov might be not insubstantial.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I also doubt your proposed solution fixes the problem.  Any LN node that&lt;br/&gt;&amp;gt; accepts an uneconomic HTLC cannot recover that value, so the money is&lt;br/&gt;&amp;gt; lost either way.  Any sane regulation would treat losing value to&lt;br/&gt;&amp;gt; transaction fees the same as losing value to uneconomical conditions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, if LN nodes start polluting the UTXO set with no economic way&lt;br/&gt;&amp;gt; to clean up their mess, I think that&amp;#39;s going to cause tension between&lt;br/&gt;&amp;gt; full node operators and LN node operators.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;My anticipation is that the LN operators would stick the uneconomic HTLCs&lt;br/&gt;aggregately into a fan out utxo and try to cooperate, but failing that only&lt;br/&gt;pollute the chain by O(1) for O(n) non economic HTLCs. There is a&lt;br/&gt;difference between losing money and knowing exactly where it is but not&lt;br/&gt;claiming it.&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/20210808/b39f4a28/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210808/b39f4a28/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:40:46&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxgevupnyjt96hsgdpayx4vjyy83qfju9ru9yaplpwnzmjklhrdaqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgdtwwx5</id>
    
      <title type="html">📅 Original date posted:2021-08-08 📝 Original message: Under ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxgevupnyjt96hsgdpayx4vjyy83qfju9ru9yaplpwnzmjklhrdaqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgdtwwx5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvt3gdgwarad7lz3npreexkc8ysa4n4v0t8glj5yaqh9tcaljejas292c3h&#39;&gt;nevent1q…2c3h&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-08&lt;br/&gt;📝 Original message:&lt;br/&gt;Under no circumstances do I think we should *increase* the dust limit. That&lt;br/&gt;would have a mildly confiscatory effect on current Lightning Channel&lt;br/&gt;operators, among others.&lt;br/&gt;&lt;br/&gt;Generally, the UTXO set will grow. We should work to accommodate the worst&lt;br/&gt;case scenario under current consensus rules. I think this points to using&lt;br/&gt;things like Utreexo or similar rather than meddling in the user&amp;#39;s business.&lt;br/&gt;&lt;br/&gt;I am skeptical that 0 value outputs are a real spam problem given the cost&lt;br/&gt;to create. Generally one creates an output when one either believes it&lt;br/&gt;would make sense to redeem it in the future. So surely this is a market&lt;br/&gt;problem, if people want them they can pay what it is worth for them to have&lt;br/&gt;it. Again, it&amp;#39;s not my business.&lt;br/&gt;&lt;br/&gt;Matt proposes that people might use a nominal amount of bitcoin on a zero&lt;br/&gt;value input so that it doesn&amp;#39;t look like dust. What Matt is asking for is&lt;br/&gt;that in any protocol you pay for your space not via fees, but instead via&lt;br/&gt;an assurance bond that you will eventually redeem it and clean the state&lt;br/&gt;up. In my opinion, this is worse than just allowing a zero value input&lt;br/&gt;since then you might accrue the need for an additional change output to&lt;br/&gt;which the bond&amp;#39;s collateral be returned.&lt;br/&gt;&lt;br/&gt;With respect to the check in the mail analogy, cutting down trees for paper&lt;br/&gt;is bad for everyone and shipping things using fossil fuels contributes to&lt;br/&gt;climate change. Therefore it&amp;#39;s a cost borne by society in some respects.&lt;br/&gt;Still, if someone else decides it&amp;#39;s worth sending a remittance of whichever&lt;br/&gt;value, it is still not my business.&lt;br/&gt;&lt;br/&gt;With respect to CT and using the range proofs to exclude dust, I&amp;#39;m aware&lt;br/&gt;that can be done (hence compromising allowed transfers). Again, I don&amp;#39;t&lt;br/&gt;think it&amp;#39;s quite our business what people do, but on a technical level,&lt;br/&gt;this would have the impact of shrinking the anonymity set so is also&lt;br/&gt;suspect to me.&lt;br/&gt;&lt;br/&gt;---------------&lt;br/&gt;&lt;br/&gt;If we really want to create incentives for state clean up, I think it&amp;#39;s a&lt;br/&gt;decent design space to consider.&lt;br/&gt;&lt;br/&gt;e.g., we could set up a bottle deposit program whereby miners contribute an&lt;br/&gt;amount of funds from fee revenue from creating N outputs to a &amp;#34;rolling&lt;br/&gt;utxo&amp;#34; (e.g., a coinbase utxo that gets spent each block op_true to op_true&lt;br/&gt;under some miner rules) and the rolling utxo can either disperse funds to&lt;br/&gt;the miner reward or soak up funds from the fees in order to encourage&lt;br/&gt;blocks which have a better ratio of inputs to outputs than the mean. Miners&lt;br/&gt;can then apply this rule in the mempool to prioritize transactions that&lt;br/&gt;help their block&amp;#39;s ratio. This is all without directly interfering with the&lt;br/&gt;user&amp;#39;s intent to create whatever outputs they want, it just provides a way&lt;br/&gt;of paying miners to clean up the public common.&lt;br/&gt;&lt;br/&gt;Gas Token by Daian et al comes to mind, from Eth, w.r.t. many pitfalls&lt;br/&gt;arbing these state space freeing return curves, but it&amp;#39;s worth thinking&lt;br/&gt;through nonetheless.&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/20210808/8fcb4331/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210808/8fcb4331/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:40:45&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9w329vv4kyz8e93d9p6dvpa0gcal95ratq9ykuqlqneptnfaxhpszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgvwl6pl</id>
    
      <title type="html">📅 Original date posted:2021-08-08 📝 Original message: We ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9w329vv4kyz8e93d9p6dvpa0gcal95ratq9ykuqlqneptnfaxhpszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgvwl6pl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdtwvzwlsdxglqxvlmh8002a4mxfhswu0vxted2jf5prkyzzzh7qcdzvsj3&#39;&gt;nevent1q…vsj3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-08-08&lt;br/&gt;📝 Original message:&lt;br/&gt;We should remove the dust limit from Bitcoin. Five reasons:&lt;br/&gt;&lt;br/&gt;1) it&amp;#39;s not our business what outputs people want to create&lt;br/&gt;2) dust outputs can be used in various authentication/delegation smart&lt;br/&gt;contracts&lt;br/&gt;3) dust sized htlcs in lightning (&lt;br/&gt;&lt;a href=&#34;https://bitcoin.stackexchange.com/questions/46730/can-you-send-amounts-that-would-typically-be-considered-dust-through-the-light&#34;&gt;https://bitcoin.stackexchange.com/questions/46730/can-you-send-amounts-that-would-typically-be-considered-dust-through-the-light&lt;/a&gt;)&lt;br/&gt;force channels to operate in a semi-trusted mode which has implications&lt;br/&gt;(AFAIU) for the regulatory classification of channels in various&lt;br/&gt;jurisdictions; agnostic treatment of fund transfers would simplify this&lt;br/&gt;(like getting a 0.01 cent dividend check in the mail)&lt;br/&gt;4) thinly divisible colored coin protocols might make use of sats as value&lt;br/&gt;markers for transactions.&lt;br/&gt;5) should we ever do confidential transactions we can&amp;#39;t prevent it without&lt;br/&gt;compromising privacy / allowed transfers&lt;br/&gt;&lt;br/&gt;The main reasons I&amp;#39;m aware of not allow dust creation is that:&lt;br/&gt;&lt;br/&gt;1) dust is spam&lt;br/&gt;2) dust fingerprinting attacks&lt;br/&gt;&lt;br/&gt;1 is (IMO) not valid given the 5 reasons above, and 2 is preventable by&lt;br/&gt;well behaved wallets to not redeem outputs that cost more in fees than they&lt;br/&gt;are worth.&lt;br/&gt;&lt;br/&gt;cheers,&lt;br/&gt;&lt;br/&gt;jeremy&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/lightning-dev/attachments/20210808/c022237a/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20210808/c022237a/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:40:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs98caqap6kypettza3xsczxy8a86842jsz7cevaz3dhz3yt8k9pnszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgq60h7j</id>
    
      <title type="html">📅 Original date posted:2022-01-28 📝 Original message:Lloyd, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs98caqap6kypettza3xsczxy8a86842jsz7cevaz3dhz3yt8k9pnszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgq60h7j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgv44cr3p63hsffkgwanfxj3ppn24d8qe2gkprpgv9n7jtga2j43gd7tt0k&#39;&gt;nevent1q…tt0k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-28&lt;br/&gt;📝 Original message:Lloyd,&lt;br/&gt;&lt;br/&gt;This is an excellent write up, the idea and benefits are clear.&lt;br/&gt;&lt;br/&gt;Is it correct that in the case of a 3/5th threshold it is a total 10x * 30x&lt;br/&gt;= 300x improvement? Quite impressive.&lt;br/&gt;&lt;br/&gt;I have a few notes of possible added benefits / features of DLCs with CTV:&lt;br/&gt;&lt;br/&gt;1) CTV also enables a &amp;#34;trustless timeout&amp;#34; branch, whereby you can have a&lt;br/&gt;failover claim that returns funds to both sides.&lt;br/&gt;&lt;br/&gt;There are a few ways to do this:&lt;br/&gt;&lt;br/&gt;A) The simplest is just an oracle-free &amp;lt;STH(timeout tx)&amp;gt; CTV whereby the&lt;br/&gt;timeout transaction has an absolute/relative timelock after the creation of&lt;br/&gt;the DLC in question.&lt;br/&gt;&lt;br/&gt;B) An alternative approach I like is to have the base DLC have a branch&lt;br/&gt;`&amp;lt;STH(begin timeout)&amp;gt; CTV` which pays into a DLC that is the exact same&lt;br/&gt;except it removes the just-used branch and replaces it with `&amp;lt;STH(timeout&lt;br/&gt;tx)&amp;gt; CTV` which contains a relative timelock R for the desired amount of&lt;br/&gt;time to resolve. This has the advantage of always guaranteeing at least R&lt;br/&gt;amount of time since the Oracles have been claimed to be non-live to&lt;br/&gt;&amp;#34;return funds&amp;#34;  to parties participating&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;2) CTV DLCs are non-interactive asynchronously third-party unilaterally&lt;br/&gt;creatable.&lt;br/&gt;&lt;br/&gt;What I mean by this is that it is possible for a single party to create a&lt;br/&gt;DLC on behalf of another user since there is no required per-instance&lt;br/&gt;pre-signing or randomly generated state. E.g., if Alice wants to create a&lt;br/&gt;DLC with Bob, and knows the contract details, oracles, and a key for Bob,&lt;br/&gt;she can create the contract and pay to it unilaterally as a payment to Bob.&lt;br/&gt;&lt;br/&gt;This enables use cases like pay-to-DLC addresses. Pay-to-DLC addresses can&lt;br/&gt;also be constructed and then sent (along with a specific amount) to a third&lt;br/&gt;party service (such as an exchange or Lightning node) to create DLCs&lt;br/&gt;without requiring the third party service to do anything other than make&lt;br/&gt;the payment as requested.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;3) CTV DLCs can be composed in interesting ways&lt;br/&gt;&lt;br/&gt;Options over DLCs open up many exciting types of instrument where Alice can&lt;br/&gt;do things like:&lt;br/&gt;A) Create a Option expiring in 1 week where Bob can add funds to pay a&lt;br/&gt;premium and &amp;#34;Open&amp;#34; a DLC on an outcome closing in 1 year&lt;br/&gt;B) Create an Option expiring in 1 week where one-of-many Bobs can pay the&lt;br/&gt;premium (on-chain DEX?).&lt;br/&gt;&lt;br/&gt; See &lt;a href=&#34;https://rubin.io/bitcoin/2021/12/20/advent-23/&#34;&gt;https://rubin.io/bitcoin/2021/12/20/advent-23/&lt;/a&gt; for more concrete stuff&lt;br/&gt;around this.&lt;br/&gt;&lt;br/&gt;There are also opportunities for perpetual-like contracts where you could&lt;br/&gt;combine into one logical DLC 12 DLCs closing 1 per month that can either be&lt;br/&gt;payed out all at once at the end of the year, or profit pulled out&lt;br/&gt;partially at any time earlier.&lt;br/&gt;&lt;br/&gt;4) This satisfies (I think?) my request to make DLCs expressible as Sapio&lt;br/&gt;contracts in &lt;a href=&#34;https://rubin.io/bitcoin/2021/12/20/advent-23/&#34;&gt;https://rubin.io/bitcoin/2021/12/20/advent-23/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;5) An additional performance improvement can be had for iterative DLCs in&lt;br/&gt;Lightning where you might trade over a fixed set of attestation points with&lt;br/&gt;variable payout curves (e.g., just modifying some set of the CTV points).&lt;br/&gt;Defer to you on performance, but this could help enable some more HFT-y&lt;br/&gt;experiences for DLCs in LN&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Jan 24, 2022 at 3:04 AM Lloyd Fournier 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 dlc-dev and bitcoin-dev,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; tl;dr OP_CTV simplifies and improves performance of DLCs by a factor of *a lot*.&lt;br/&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/20220128/442b0946/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220128/442b0946/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:02:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspdnftzkfzqt8w32hqzehqyw2alklffpnhg2fn30awktehyd4u2mgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgvzu4zp</id>
    
      <title type="html">📅 Original date posted:2022-01-19 📝 Original message:Ah my ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspdnftzkfzqt8w32hqzehqyw2alklffpnhg2fn30awktehyd4u2mgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgvzu4zp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdvqpvdxsedw23xlenht7vexmgxg0h646vjw7uzrjunzlq5udvh3qeesgre&#39;&gt;nevent1q…sgre&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-19&lt;br/&gt;📝 Original message:Ah my bad i misread what you were saying as being about SIGHASH_BUNDLE like&lt;br/&gt;proposals.&lt;br/&gt;&lt;br/&gt;For what you&amp;#39;re discussing, I previously proposed&lt;br/&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;which is similar.&lt;br/&gt;&lt;br/&gt;The benefit of the OP_VER output is that SIGHASH_EXTERNAL has the issue&lt;br/&gt;that unless you&amp;#39;re binding a WTXID (which is maybe too specific?) then you&lt;br/&gt;can have fee bumping cycles. Doing OP_VER output w/ TXID guarantees that&lt;br/&gt;you are acyclic.&lt;br/&gt;&lt;br/&gt;The difference between a fee account and this approach basically boils down&lt;br/&gt;to the impact on e.g. reorg stability, where the deposit/withdraw mechanism&lt;br/&gt;is a bit more &amp;#34;robust&amp;#34; for reorderings in reorgs than the in-band&lt;br/&gt;transaction approach, although they are very similar.&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jan 18, 2022 at 8:53 PM Billy Tetrud &amp;lt;billy.tetrud at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt;  because you make transactions third party malleable it becomes&lt;br/&gt;&amp;gt; possible to bundle and unbundle transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What I was suggesting doesn&amp;#39;t make it possible to malleate someone else&amp;#39;s&lt;br/&gt;&amp;gt; transaction. I guess maybe my proposal of using a sighash flag might have&lt;br/&gt;&amp;gt; been unclear. Imagine it as a script opcode that just says &amp;#34;this&lt;br/&gt;&amp;gt; transaction must be mined with this other transaction&amp;#34; - the only&lt;br/&gt;&amp;gt; difference being that you can use any output with any encumberance as an&lt;br/&gt;&amp;gt; input for fee bumping. It doesn&amp;#39;t prevent the original transaction from&lt;br/&gt;&amp;gt; being mined on its own. So adding junk inputs would be no more of a problem&lt;br/&gt;&amp;gt; than dust attacks already are. It would be used exactly like cpfp, except&lt;br/&gt;&amp;gt; it doesn&amp;#39;t spend the parent.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think what I was suggesting is as different from your proposal.&lt;br/&gt;&amp;gt; All the problems of fee revenue optimization and feerate rules that you&lt;br/&gt;&amp;gt; mentioned seem like they&amp;#39;d also exist for your proposal, or for cpfp. Let&lt;br/&gt;&amp;gt; me know if I should clarify further.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Jan 18, 2022 at 8:51 PM Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The issue with sighash flags is that because you make transactions third&lt;br/&gt;&amp;gt;&amp;gt; party malleable it becomes possible to bundle and unbundle transactions.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This means there are circumstances where an attacker could e.g. see your&lt;br/&gt;&amp;gt;&amp;gt; txn, and then add a lot of junk change/inputs &#43; 25 descendants and strongly&lt;br/&gt;&amp;gt;&amp;gt; anchor your transaction to the bottom of the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; because of rbf rules requiring more fee and feerate, this means you have&lt;br/&gt;&amp;gt;&amp;gt; to bump across the whole package and that can get really messy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; more generally speaking, you could imagine a future where mempools track&lt;br/&gt;&amp;gt;&amp;gt; many alternative things that might want to be in a transaction.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; suppose there are N inputs each with a weight and an amount of fee being&lt;br/&gt;&amp;gt;&amp;gt; added and the sighash flags let me pick any subset of them. However, for a&lt;br/&gt;&amp;gt;&amp;gt; txn to be standard it must be &amp;lt; 100k bytes and for it to be consensus &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; 1mb. Now it is possible you have to solve a knapsack problem in order to&lt;br/&gt;&amp;gt;&amp;gt; rationally bundle this transaction out of all possibilities.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This problem can get even thornier, suppose that the inputs I&amp;#39;m adding&lt;br/&gt;&amp;gt;&amp;gt; themselves are the outputs of another txn in the mempool, now i have to&lt;br/&gt;&amp;gt;&amp;gt; track and propagate the feerates of that child back up to the parent txn&lt;br/&gt;&amp;gt;&amp;gt; and track all these dependencies.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; perhaps with very careful engineering these issues can be tamed. however&lt;br/&gt;&amp;gt;&amp;gt; it seems with sponsors or fee accounts, by separating the pays-for from the&lt;br/&gt;&amp;gt;&amp;gt; participates-in concerns we can greatly simplify it to something like:&lt;br/&gt;&amp;gt;&amp;gt; compute effective feerate for a txn, including all sponsors that pay more&lt;br/&gt;&amp;gt;&amp;gt; than the feerate of the base txn. Mine that txn and it&amp;#39;s subsidies using&lt;br/&gt;&amp;gt;&amp;gt; the normal algo. If you run out of space, all subsidies are same-sized so&lt;br/&gt;&amp;gt;&amp;gt; just take the ones that pay the highest amount up until the added marginal&lt;br/&gt;&amp;gt;&amp;gt; feerate is less than the next eligible txn.&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; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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; On Tue, Jan 18, 2022 at 6:38 PM Billy Tetrud &amp;lt;billy.tetrud 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; I see, its not primarily to make it cheaper to append fees, but also&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; allows appending fees in cases that aren&amp;#39;t possible now. Is that right? I&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; can certainly see the benefit of a more general way to add a fee to any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transaction, regardless of whether you&amp;#39;re related to that transaction or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; not.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; How would you compare the pros and cons of your account-based approach&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; to something like a new sighash flag? Eg a sighash flag that says &amp;#34;I&amp;#39;m&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; signing this transaction, but the signature is only valid if mined in the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; same block as transaction X (or maybe transactions LIST)&amp;#34;. This could be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; named SIGHASH_EXTERNAL. Doing this would be a lot more similar to other&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin transactions, and no special account would need to be created. Any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; transaction could specify this. At least that&amp;#39;s the first thought I would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; have in designing a way to arbitrarily bump fees. Have you compared your&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; solution to something more familiar like that?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On Tue, Jan 18, 2022 at 11:43 AM Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Can you clarify what you mean by &amp;#34;improve the situation&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; There&amp;#39;s a potential mild bytes savings, but the bigger deal is that the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; API should be much less vulnerable to pinning issues, fix dust leakage for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; eltoo like protocols, and just generally allow protocol designs to be fully&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; abstracted from paying fees. You can&amp;#39;t easily mathematically quantify API&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; improvements like that.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&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; On Tue, Jan 18, 2022 at 8:13 AM Billy Tetrud &amp;lt;billy.tetrud 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; Do you have any back-of-the-napkin math on quantifying how much this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; would improve the situation vs existing methods (eg cpfp)?&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;&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 Sat, Jan 1, 2022 at 2:04 PM Jeremy 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; wrote:&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; Happy new years devs,&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 figured I would share some thoughts for conceptual review that have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; been bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m sure could be improved greatly.&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; Transaction fees are an integral part of bitcoin.&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; However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; part of the transactions that they occur in.&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; While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Having the fees paid in band makes writing these contracts much more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction, but also the fees.&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; Previously, I proposed a special type of transaction called a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;#34;Sponsor&amp;#34; which has some special consensus &#43; mempool rules to allow&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; arbitrarily appending fees to a transaction to bump it up in the mempool.&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; As an alternative, we could establish an account system in Bitcoin as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an &amp;#34;extension block&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; *Here&amp;#39;s how it might work:*&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. Define a special anyone can spend output type that is a &amp;#34;fee&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; account&amp;#34; (e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; associated with them, but are overall anyone can spend.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2. All deposits to these outputs get stored in a separate UTXO&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; database for fee accounts&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 3. Fee accounts can sign only two kinds of transaction: A: a fee&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; amount and a TXID (or Outpoint?); B: a withdraw amount, a fee, and&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an address&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 4. These transactions are committed in an extension block merkle&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; tree. While the actual signature must cover the TXID/Outpoint, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; committed data need only cover the index in the block of the transaction.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The public key for account lookup can be recovered from the message &#43;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; signature.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 5. In any block, any of the fee account deposits can be: released&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; into fees if there is a corresponding tx; consolidated together to reduce&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; the number of utxos (this can be just an OP_TRUE no metadata needed); or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; released into fees *and paid back* into the requested withdrawal key&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (encumbering a 100 block timeout). Signatures must be unique in a block.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 6. Mempool logic is updated to allow attaching of account fee spends&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to transactions, the mempool can restrict that an account is not allowed&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more spend more than it&amp;#39;s balance.&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; *But aren&amp;#39;t accounts &amp;#34;bad&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; Yes, accounts are bad. But these accounts are not bad, because any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; funds withdrawn from the fee extension are fundamentally locked for 100&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; blocks as a coinbase output, so there should be no issues with any series&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of reorgs. Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; state updates can always be applied in a conflict-free way in any order.&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;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Improving the privacy of this design:*&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 design could likely be modified to implement something like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; expense of being a bit more expensive.&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; Other operations could be added to allow a trustless mixing to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; done by miners automatically where groups of accounts with similar values&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; are trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; them with better privacy. While a miner generating an update would be able&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; independent miners that could potentially add sufficient privacy.&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 LN can also be used with PTLCs to, in theory, have another&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; individual paid to sponsor a transaction on your behalf only if they reveal&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; a valid sig from their fee paying account, although under this model it&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hard to ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; withdrawing the rest. However, this could be partly solved by using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; reputable fee accounts (reputation could be measured somewhat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; decentralized-ly by longevity of the account and transactions paid for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; historically).&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; *Scalability*&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 design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fees to a transaction does not require adding inputs or outputs and does&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not require tracking substantial amounts of new state.&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; Paying someone else to pay for you via the LN also helps make this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; more efficient if the withdrawal issues can be fixed.&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; *Lightning:*&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 type of design works really well for channels because the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; addition of fees to e.g. a channel state does not require any sort of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; pre-planning (e.g. anchors) or transaction flexibility (SIGHASH flags).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This sort of design is naturally immune to pinning issues since you could&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; offer to pay a fee for any TXID and the number of fee adding offers does&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not need to be restricted in the same way the descendant transactions would&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; need to be.&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; *Without a fork?*&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 type of design could be done as a federated network that bribes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; miners -- potentially even retroactively after a block is formed. That&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; might be sufficient to prove the concept works before a consensus upgrade&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; interfering with normal mining.&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;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Happy new year!!&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; Jeremy&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; --&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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; 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;-------------- 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/20220118/862ed586/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220118/862ed586/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:01:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvze20hhsqy3k9yj6qg5yaljctt05fzj8rndkgj8asdumk7fjfmhgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgxgtkw8</id>
    
      <title type="html">📅 Original date posted:2022-01-19 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvze20hhsqy3k9yj6qg5yaljctt05fzj8rndkgj8asdumk7fjfmhgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgxgtkw8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrgjr8k4tpv3fy90h97qq2rkdagkd3w2z4n3segt9lcagkpgsr4tqal67u7&#39;&gt;nevent1q…67u7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-19&lt;br/&gt;📝 Original message:The issue with sighash flags is that because you make transactions third&lt;br/&gt;party malleable it becomes possible to bundle and unbundle transactions.&lt;br/&gt;&lt;br/&gt;This means there are circumstances where an attacker could e.g. see your&lt;br/&gt;txn, and then add a lot of junk change/inputs &#43; 25 descendants and strongly&lt;br/&gt;anchor your transaction to the bottom of the mempool.&lt;br/&gt;&lt;br/&gt;because of rbf rules requiring more fee and feerate, this means you have to&lt;br/&gt;bump across the whole package and that can get really messy.&lt;br/&gt;&lt;br/&gt;more generally speaking, you could imagine a future where mempools track&lt;br/&gt;many alternative things that might want to be in a transaction.&lt;br/&gt;&lt;br/&gt;suppose there are N inputs each with a weight and an amount of fee being&lt;br/&gt;added and the sighash flags let me pick any subset of them. However, for a&lt;br/&gt;txn to be standard it must be &amp;lt; 100k bytes and for it to be consensus &amp;lt;&lt;br/&gt;1mb. Now it is possible you have to solve a knapsack problem in order to&lt;br/&gt;rationally bundle this transaction out of all possibilities.&lt;br/&gt;&lt;br/&gt;This problem can get even thornier, suppose that the inputs I&amp;#39;m adding&lt;br/&gt;themselves are the outputs of another txn in the mempool, now i have to&lt;br/&gt;track and propagate the feerates of that child back up to the parent txn&lt;br/&gt;and track all these dependencies.&lt;br/&gt;&lt;br/&gt;perhaps with very careful engineering these issues can be tamed. however it&lt;br/&gt;seems with sponsors or fee accounts, by separating the pays-for from the&lt;br/&gt;participates-in concerns we can greatly simplify it to something like:&lt;br/&gt;compute effective feerate for a txn, including all sponsors that pay more&lt;br/&gt;than the feerate of the base txn. Mine that txn and it&amp;#39;s subsidies using&lt;br/&gt;the normal algo. If you run out of space, all subsidies are same-sized so&lt;br/&gt;just take the ones that pay the highest amount up until the added marginal&lt;br/&gt;feerate is less than the next eligible txn.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jan 18, 2022 at 6:38 PM Billy Tetrud &amp;lt;billy.tetrud at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I see, its not primarily to make it cheaper to append fees, but also&lt;br/&gt;&amp;gt; allows appending fees in cases that aren&amp;#39;t possible now. Is that right? I&lt;br/&gt;&amp;gt; can certainly see the benefit of a more general way to add a fee to any&lt;br/&gt;&amp;gt; transaction, regardless of whether you&amp;#39;re related to that transaction or&lt;br/&gt;&amp;gt; not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; How would you compare the pros and cons of your account-based approach to&lt;br/&gt;&amp;gt; something like a new sighash flag? Eg a sighash flag that says &amp;#34;I&amp;#39;m signing&lt;br/&gt;&amp;gt; this transaction, but the signature is only valid if mined in the same&lt;br/&gt;&amp;gt; block as transaction X (or maybe transactions LIST)&amp;#34;. This could be named&lt;br/&gt;&amp;gt; SIGHASH_EXTERNAL. Doing this would be a lot more similar to other bitcoin&lt;br/&gt;&amp;gt; transactions, and no special account would need to be created. Any&lt;br/&gt;&amp;gt; transaction could specify this. At least that&amp;#39;s the first thought I would&lt;br/&gt;&amp;gt; have in designing a way to arbitrarily bump fees. Have you compared your&lt;br/&gt;&amp;gt; solution to something more familiar like that?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Tue, Jan 18, 2022 at 11:43 AM Jeremy &amp;lt;jlrubin at mit.edu&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Can you clarify what you mean by &amp;#34;improve the situation&amp;#34;?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; There&amp;#39;s a potential mild bytes savings, but the bigger deal is that the&lt;br/&gt;&amp;gt;&amp;gt; API should be much less vulnerable to pinning issues, fix dust leakage for&lt;br/&gt;&amp;gt;&amp;gt; eltoo like protocols, and just generally allow protocol designs to be fully&lt;br/&gt;&amp;gt;&amp;gt; abstracted from paying fees. You can&amp;#39;t easily mathematically quantify API&lt;br/&gt;&amp;gt;&amp;gt; improvements like that.&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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; On Tue, Jan 18, 2022 at 8:13 AM Billy Tetrud &amp;lt;billy.tetrud 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; Do you have any back-of-the-napkin math on quantifying how much this&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; would improve the situation vs existing methods (eg cpfp)?&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; On Sat, Jan 1, 2022 at 2:04 PM Jeremy 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; Happy new years devs,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I figured I would share some thoughts for conceptual review that have&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; been bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; I&amp;#39;m sure could be improved greatly.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Transaction fees are an integral part of bitcoin.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a part&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of the transactions that they occur in.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Having the fees paid in band makes writing these contracts much more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transaction, but also the fees.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Previously, I proposed a special type of transaction called a &amp;#34;Sponsor&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; which has some special consensus &#43; mempool rules to allow arbitrarily&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; appending fees to a transaction to bump it up in the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; As an alternative, we could establish an account system in Bitcoin as&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; an &amp;#34;extension block&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Here&amp;#39;s how it might work:*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 1. Define a special anyone can spend output type that is a &amp;#34;fee&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; account&amp;#34; (e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; associated with them, but are overall anyone can spend.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 2. All deposits to these outputs get stored in a separate UTXO database&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for fee accounts&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 3. Fee accounts can sign only two kinds of transaction: A: a fee amount&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; and a TXID (or Outpoint?); B: a withdraw amount, a fee, and an address&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 4. These transactions are committed in an extension block merkle tree.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; While the actual signature must cover the TXID/Outpoint, the committed data&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; need only cover the index in the block of the transaction. The public key&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; for account lookup can be recovered from the message &#43; signature.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 5. In any block, any of the fee account deposits can be: released into&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fees if there is a corresponding tx; consolidated together to reduce the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; number of utxos (this can be just an OP_TRUE no metadata needed); or&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; released into fees *and paid back* into the requested withdrawal key&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (encumbering a 100 block timeout). Signatures must be unique in a block.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; 6. Mempool logic is updated to allow attaching of account fee spends to&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; transactions, the mempool can restrict that an account is not allowed more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; spend more than it&amp;#39;s balance.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *But aren&amp;#39;t accounts &amp;#34;bad&amp;#34;?*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Yes, accounts are bad. But these accounts are not bad, because any&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; funds withdrawn from the fee extension are fundamentally locked for 100&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; blocks as a coinbase output, so there should be no issues with any series&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of reorgs. Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; state updates can always be applied in a conflict-free way in any order.&lt;br/&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; *Improving the privacy of this design:*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This design could likely be modified to implement something like&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; expense of being a bit more expensive.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Other operations could be added to allow a trustless mixing to be done&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; by miners automatically where groups of accounts with similar values are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; them with better privacy. While a miner generating an update would be able&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; independent miners that could potentially add sufficient privacy.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; The LN can also be used with PTLCs to, in theory, have another&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; individual paid to sponsor a transaction on your behalf only if they reveal&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; a valid sig from their fee paying account, although under this model it&amp;#39;s&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; hard to ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; withdrawing the rest. However, this could be partly solved by using&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; reputable fee accounts (reputation could be measured somewhat&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; decentralized-ly by longevity of the account and transactions paid for&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; historically).&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Scalability*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fees to a transaction does not require adding inputs or outputs and does&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; not require tracking substantial amounts of new state.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Paying someone else to pay for you via the LN also helps make this more&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; efficient if the withdrawal issues can be fixed.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Lightning:*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This type of design works really well for channels because the addition&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; of fees to e.g. a channel state does not require any sort of pre-planning&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; (e.g. anchors) or transaction flexibility (SIGHASH flags). This sort of&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; design is naturally immune to pinning issues since you could offer to pay a&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; fee for any TXID and the number of fee adding offers does not need to be&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; restricted in the same way the descendant transactions would need to be.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; *Without a fork?*&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; This type of design could be done as a federated network that bribes&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; miners -- potentially even retroactively after a block is formed. That&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; might be sufficient to prove the concept works before a consensus upgrade&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; is deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; interfering with normal mining.&lt;br/&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; Happy new year!!&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; Jeremy&lt;br/&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; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&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/20220118/bde037b2/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220118/bde037b2/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:01:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfwk5frcr4x27l5aulf0d8jx9xgd2t09g5dsg06p9dky93dp806xgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg442nl0</id>
    
      <title type="html">📅 Original date posted:2022-01-18 📝 Original message:Can ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfwk5frcr4x27l5aulf0d8jx9xgd2t09g5dsg06p9dky93dp806xgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg442nl0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxknd37vja5x0xdg0z96h5mxmme0t8dz67dh5xfmsjr4mulgww5hq804v2v&#39;&gt;nevent1q…4v2v&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-18&lt;br/&gt;📝 Original message:Can you clarify what you mean by &amp;#34;improve the situation&amp;#34;?&lt;br/&gt;&lt;br/&gt;There&amp;#39;s a potential mild bytes savings, but the bigger deal is that the API&lt;br/&gt;should be much less vulnerable to pinning issues, fix dust leakage for&lt;br/&gt;eltoo like protocols, and just generally allow protocol designs to be fully&lt;br/&gt;abstracted from paying fees. You can&amp;#39;t easily mathematically quantify API&lt;br/&gt;improvements like that.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jan 18, 2022 at 8:13 AM Billy Tetrud &amp;lt;billy.tetrud at gmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Do you have any back-of-the-napkin math on quantifying how much this would&lt;br/&gt;&amp;gt; improve the situation vs existing methods (eg cpfp)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sat, Jan 1, 2022 at 2:04 PM Jeremy 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; Happy new years devs,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I figured I would share some thoughts for conceptual review that have&lt;br/&gt;&amp;gt;&amp;gt; been bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;&amp;gt;&amp;gt; semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;&amp;gt;&amp;gt; approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;&amp;gt;&amp;gt; I&amp;#39;m sure could be improved greatly.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Transaction fees are an integral part of bitcoin.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a part&lt;br/&gt;&amp;gt;&amp;gt; of the transactions that they occur in.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;&amp;gt;&amp;gt; simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;&amp;gt;&amp;gt; things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;&amp;gt;&amp;gt; and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;&amp;gt;&amp;gt; Having the fees paid in band makes writing these contracts much more&lt;br/&gt;&amp;gt;&amp;gt; difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;&amp;gt;&amp;gt; transaction, but also the fees.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Previously, I proposed a special type of transaction called a &amp;#34;Sponsor&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; which has some special consensus &#43; mempool rules to allow arbitrarily&lt;br/&gt;&amp;gt;&amp;gt; appending fees to a transaction to bump it up in the mempool.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; As an alternative, we could establish an account system in Bitcoin as an&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;extension block&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Here&amp;#39;s how it might work:*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. Define a special anyone can spend output type that is a &amp;#34;fee account&amp;#34;&lt;br/&gt;&amp;gt;&amp;gt; (e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;&amp;gt;&amp;gt; associated with them, but are overall anyone can spend.&lt;br/&gt;&amp;gt;&amp;gt; 2. All deposits to these outputs get stored in a separate UTXO database&lt;br/&gt;&amp;gt;&amp;gt; for fee accounts&lt;br/&gt;&amp;gt;&amp;gt; 3. Fee accounts can sign only two kinds of transaction: A: a fee amount&lt;br/&gt;&amp;gt;&amp;gt; and a TXID (or Outpoint?); B: a withdraw amount, a fee, and an address&lt;br/&gt;&amp;gt;&amp;gt; 4. These transactions are committed in an extension block merkle tree.&lt;br/&gt;&amp;gt;&amp;gt; While the actual signature must cover the TXID/Outpoint, the committed data&lt;br/&gt;&amp;gt;&amp;gt; need only cover the index in the block of the transaction. The public key&lt;br/&gt;&amp;gt;&amp;gt; for account lookup can be recovered from the message &#43; signature.&lt;br/&gt;&amp;gt;&amp;gt; 5. In any block, any of the fee account deposits can be: released into&lt;br/&gt;&amp;gt;&amp;gt; fees if there is a corresponding tx; consolidated together to reduce the&lt;br/&gt;&amp;gt;&amp;gt; number of utxos (this can be just an OP_TRUE no metadata needed); or&lt;br/&gt;&amp;gt;&amp;gt; released into fees *and paid back* into the requested withdrawal key&lt;br/&gt;&amp;gt;&amp;gt; (encumbering a 100 block timeout). Signatures must be unique in a block.&lt;br/&gt;&amp;gt;&amp;gt; 6. Mempool logic is updated to allow attaching of account fee spends to&lt;br/&gt;&amp;gt;&amp;gt; transactions, the mempool can restrict that an account is not allowed more&lt;br/&gt;&amp;gt;&amp;gt; spend more than it&amp;#39;s balance.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *But aren&amp;#39;t accounts &amp;#34;bad&amp;#34;?*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Yes, accounts are bad. But these accounts are not bad, because any funds&lt;br/&gt;&amp;gt;&amp;gt; withdrawn from the fee extension are fundamentally locked for 100 blocks as&lt;br/&gt;&amp;gt;&amp;gt; a coinbase output, so there should be no issues with any series of reorgs.&lt;br/&gt;&amp;gt;&amp;gt; Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the state&lt;br/&gt;&amp;gt;&amp;gt; updates can always be applied in a conflict-free way in any order.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Improving the privacy of this design:*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This design could likely be modified to implement something like&lt;br/&gt;&amp;gt;&amp;gt; Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;&amp;gt;&amp;gt; unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;&amp;gt;&amp;gt; expense of being a bit more expensive.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Other operations could be added to allow a trustless mixing to be done by&lt;br/&gt;&amp;gt;&amp;gt; miners automatically where groups of accounts with similar values are&lt;br/&gt;&amp;gt;&amp;gt; trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;&amp;gt;&amp;gt; derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;&amp;gt;&amp;gt; be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;&amp;gt;&amp;gt; produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;&amp;gt;&amp;gt; them with better privacy. While a miner generating an update would be able&lt;br/&gt;&amp;gt;&amp;gt; to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;&amp;gt;&amp;gt; independent miners that could potentially add sufficient privacy.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The LN can also be used with PTLCs to, in theory, have another individual&lt;br/&gt;&amp;gt;&amp;gt; paid to sponsor a transaction on your behalf only if they reveal a valid&lt;br/&gt;&amp;gt;&amp;gt; sig from their fee paying account, although under this model it&amp;#39;s hard to&lt;br/&gt;&amp;gt;&amp;gt; ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by withdrawing&lt;br/&gt;&amp;gt;&amp;gt; the rest. However, this could be partly solved by using reputable fee&lt;br/&gt;&amp;gt;&amp;gt; accounts (reputation could be measured somewhat decentralized-ly by&lt;br/&gt;&amp;gt;&amp;gt; longevity of the account and transactions paid for historically).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Scalability*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding fees&lt;br/&gt;&amp;gt;&amp;gt; to a transaction does not require adding inputs or outputs and does not&lt;br/&gt;&amp;gt;&amp;gt; require tracking substantial amounts of new state.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Paying someone else to pay for you via the LN also helps make this more&lt;br/&gt;&amp;gt;&amp;gt; efficient if the withdrawal issues can be fixed.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Lightning:*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This type of design works really well for channels because the addition&lt;br/&gt;&amp;gt;&amp;gt; of fees to e.g. a channel state does not require any sort of pre-planning&lt;br/&gt;&amp;gt;&amp;gt; (e.g. anchors) or transaction flexibility (SIGHASH flags). This sort of&lt;br/&gt;&amp;gt;&amp;gt; design is naturally immune to pinning issues since you could offer to pay a&lt;br/&gt;&amp;gt;&amp;gt; fee for any TXID and the number of fee adding offers does not need to be&lt;br/&gt;&amp;gt;&amp;gt; restricted in the same way the descendant transactions would need to be.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *Without a fork?*&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This type of design could be done as a federated network that bribes&lt;br/&gt;&amp;gt;&amp;gt; miners -- potentially even retroactively after a block is formed. That&lt;br/&gt;&amp;gt;&amp;gt; might be sufficient to prove the concept works before a consensus upgrade&lt;br/&gt;&amp;gt;&amp;gt; is deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;&amp;gt;&amp;gt; interfering with normal mining.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Happy new year!!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Jeremy&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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;-------------- 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/20220118/d8324802/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220118/d8324802/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:01:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqp4659hzc8h45x58lupe7cr69a9a6hx9qk8aepsl9alyv362885czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg7pmm4a</id>
    
      <title type="html">📅 Original date posted:2022-01-01 📝 Original message:Happy ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqp4659hzc8h45x58lupe7cr69a9a6hx9qk8aepsl9alyv362885czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg7pmm4a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyrlm5g6cpkvfw3gnvurxpfkx9lf7ujkqkgagqpswd6gcyqlh9r7qszzdyq&#39;&gt;nevent1q…zdyq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-01-01&lt;br/&gt;📝 Original message:Happy new years devs,&lt;br/&gt;&lt;br/&gt;I figured I would share some thoughts for conceptual review that have been&lt;br/&gt;bouncing around my head as an opportunity to clean up the fee paying&lt;br/&gt;semantics in bitcoin &amp;#34;for good&amp;#34;. The design space is very wide on the&lt;br/&gt;approach I&amp;#39;ll share, so below is just a sketch of how it could work which&lt;br/&gt;I&amp;#39;m sure could be improved greatly.&lt;br/&gt;&lt;br/&gt;Transaction fees are an integral part of bitcoin.&lt;br/&gt;&lt;br/&gt;However, due to quirks of Bitcoin&amp;#39;s transaction design, fees are a part of&lt;br/&gt;the transactions that they occur in.&lt;br/&gt;&lt;br/&gt;While this works in a &amp;#34;Bitcoin 1.0&amp;#34; world, where all transactions are&lt;br/&gt;simple on-chain transfers, real world use of Bitcoin requires support for&lt;br/&gt;things like Fee Bumping stuck transactions, DoS resistant Payment Channels,&lt;br/&gt;and other long lived Smart Contracts that can&amp;#39;t predict future fee rates.&lt;br/&gt;Having the fees paid in band makes writing these contracts much more&lt;br/&gt;difficult as you can&amp;#39;t merely express the logic you want for the&lt;br/&gt;transaction, but also the fees.&lt;br/&gt;&lt;br/&gt;Previously, I proposed a special type of transaction called a &amp;#34;Sponsor&amp;#34;&lt;br/&gt;which has some special consensus &#43; mempool rules to allow arbitrarily&lt;br/&gt;appending fees to a transaction to bump it up in the mempool.&lt;br/&gt;&lt;br/&gt;As an alternative, we could establish an account system in Bitcoin as an&lt;br/&gt;&amp;#34;extension block&amp;#34;.&lt;br/&gt;&lt;br/&gt;*Here&amp;#39;s how it might work:*&lt;br/&gt;&lt;br/&gt;1. Define a special anyone can spend output type that is a &amp;#34;fee account&amp;#34;&lt;br/&gt;(e.g. segwit V2). Such outputs have a redeeming key and an amount&lt;br/&gt;associated with them, but are overall anyone can spend.&lt;br/&gt;2. All deposits to these outputs get stored in a separate UTXO database for&lt;br/&gt;fee accounts&lt;br/&gt;3. Fee accounts can sign only two kinds of transaction: A: a fee amount and&lt;br/&gt;a TXID (or Outpoint?); B: a withdraw amount, a fee, and an address&lt;br/&gt;4. These transactions are committed in an extension block merkle tree.&lt;br/&gt;While the actual signature must cover the TXID/Outpoint, the committed data&lt;br/&gt;need only cover the index in the block of the transaction. The public key&lt;br/&gt;for account lookup can be recovered from the message &#43; signature.&lt;br/&gt;5. In any block, any of the fee account deposits can be: released into fees&lt;br/&gt;if there is a corresponding tx; consolidated together to reduce the number&lt;br/&gt;of utxos (this can be just an OP_TRUE no metadata needed); or released into&lt;br/&gt;fees *and paid back* into the requested withdrawal key (encumbering a 100&lt;br/&gt;block timeout). Signatures must be unique in a block.&lt;br/&gt;6. Mempool logic is updated to allow attaching of account fee spends to&lt;br/&gt;transactions, the mempool can restrict that an account is not allowed more&lt;br/&gt;spend more than it&amp;#39;s balance.&lt;br/&gt;&lt;br/&gt;*But aren&amp;#39;t accounts &amp;#34;bad&amp;#34;?*&lt;br/&gt;&lt;br/&gt;Yes, accounts are bad. But these accounts are not bad, because any funds&lt;br/&gt;withdrawn from the fee extension are fundamentally locked for 100 blocks as&lt;br/&gt;a coinbase output, so there should be no issues with any series of reorgs.&lt;br/&gt;Further, since there is no &amp;#34;rich state&amp;#34; for these accounts, the state&lt;br/&gt;updates can always be applied in a conflict-free way in any order.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*Improving the privacy of this design:*&lt;br/&gt;&lt;br/&gt;This design could likely be modified to implement something like&lt;br/&gt;Tornado.cash or something else so that the fee account paying can be&lt;br/&gt;unlinked from the transaction being paid for, improving privacy at the&lt;br/&gt;expense of being a bit more expensive.&lt;br/&gt;&lt;br/&gt;Other operations could be added to allow a trustless mixing to be done by&lt;br/&gt;miners automatically where groups of accounts with similar values are&lt;br/&gt;trustlessly  split into a common denominator and change, and keys are&lt;br/&gt;derived via a verifiable stealth address like protocol (so fee balances can&lt;br/&gt;be discovered by tracing the updates posted). These updates could also be&lt;br/&gt;produced by individuals rather than miners, and miners could simply honor&lt;br/&gt;them with better privacy. While a miner generating an update would be able&lt;br/&gt;to deanonymize their mixes, if you have your account mixed several times by&lt;br/&gt;independent miners that could potentially add sufficient privacy.&lt;br/&gt;&lt;br/&gt;The LN can also be used with PTLCs to, in theory, have another individual&lt;br/&gt;paid to sponsor a transaction on your behalf only if they reveal a valid&lt;br/&gt;sig from their fee paying account, although under this model it&amp;#39;s hard to&lt;br/&gt;ensure that the owner doesn&amp;#39;t pay a fee and then &amp;#39;cancel&amp;#39; by withdrawing&lt;br/&gt;the rest. However, this could be partly solved by using reputable fee&lt;br/&gt;accounts (reputation could be measured somewhat decentralized-ly by&lt;br/&gt;longevity of the account and transactions paid for historically).&lt;br/&gt;&lt;br/&gt;*Scalability*&lt;br/&gt;&lt;br/&gt;This design is fundamentally &amp;#39;decent&amp;#39; for scalability because adding fees&lt;br/&gt;to a transaction does not require adding inputs or outputs and does not&lt;br/&gt;require tracking substantial amounts of new state.&lt;br/&gt;&lt;br/&gt;Paying someone else to pay for you via the LN also helps make this more&lt;br/&gt;efficient if the withdrawal issues can be fixed.&lt;br/&gt;&lt;br/&gt;*Lightning:*&lt;br/&gt;&lt;br/&gt;This type of design works really well for channels because the addition of&lt;br/&gt;fees to e.g. a channel state does not require any sort of pre-planning&lt;br/&gt;(e.g. anchors) or transaction flexibility (SIGHASH flags). This sort of&lt;br/&gt;design is naturally immune to pinning issues since you could offer to pay a&lt;br/&gt;fee for any TXID and the number of fee adding offers does not need to be&lt;br/&gt;restricted in the same way the descendant transactions would need to be.&lt;br/&gt;&lt;br/&gt;*Without a fork?*&lt;br/&gt;&lt;br/&gt;This type of design could be done as a federated network that bribes miners&lt;br/&gt;-- potentially even retroactively after a block is formed. That might be&lt;br/&gt;sufficient to prove the concept works before a consensus upgrade is&lt;br/&gt;deployed, but such an approach does mean there is a centralizing layer&lt;br/&gt;interfering with normal mining.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Happy new year!!&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20220101/4cd5c38b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220101/4cd5c38b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:01:49&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0aksgpup6s40lc69dq036fgugtt0askyd4lfg8xr239775ys7llszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgmjcv9l</id>
    
      <title type="html">📅 Original date posted:2021-12-18 📝 Original message:Small ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0aksgpup6s40lc69dq036fgugtt0askyd4lfg8xr239775ys7llszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgmjcv9l" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd2q29lu834yy2p5npvedae04nue7swvlv4cljdszu2ks28g7uleq789t5r&#39;&gt;nevent1q…9t5r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-12-18&lt;br/&gt;📝 Original message:Small idea:&lt;br/&gt;&lt;br/&gt;ease into getting rid of full-rbf by keeping the flag working, but make&lt;br/&gt;enforcement of non-replaceability something that happens n seconds after&lt;br/&gt;first seen.&lt;br/&gt;&lt;br/&gt;this reduces the ability to partition the mempools by broadcasting&lt;br/&gt;irreplaceable conflicts all at once, and slowly eases clients off of&lt;br/&gt;relying on non-RBF.&lt;br/&gt;&lt;br/&gt;we might start with 60 seconds, and then double every release till we get&lt;br/&gt;to 600 at which point we disable it.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Tue, Jun 15, 2021 at 10:00 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,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m writing to propose deprecation of opt-in RBF in favor of full-RBF as&lt;br/&gt;&amp;gt; the Bitcoin Core&amp;#39;s default replacement policy in version 24.0. As a&lt;br/&gt;&amp;gt; reminder, the next release is 22.0, aimed for August 1st, assuming&lt;br/&gt;&amp;gt; agreement is reached, this policy change would enter into deployment phase&lt;br/&gt;&amp;gt; a year from now.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Even if this replacement policy has been deemed as highly controversial a&lt;br/&gt;&amp;gt; few years ago, ongoing and anticipated changes in the Bitcoin ecosystem are&lt;br/&gt;&amp;gt; motivating this proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # RBF opt-out as a DoS Vector against Multi-Party Funded Transactions&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As explained in &amp;#34;On Mempool Funny Games against Multi-Party Funded&lt;br/&gt;&amp;gt; Transactions&amp;#39;&amp;#39;, 2nd issue [0], an attacker can easily DoS a multi-party&lt;br/&gt;&amp;gt; funded transactions by propagating an RBF opt-out double-spend of its&lt;br/&gt;&amp;gt; contributed input before the honest transaction is broadcasted by the&lt;br/&gt;&amp;gt; protocol orchester. DoSes are qualified in the sense of either an attacker&lt;br/&gt;&amp;gt; wasting timevalue of victim&amp;#39;s inputs or forcing exhaustion of the&lt;br/&gt;&amp;gt; fee-bumping  reserve.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This affects a series of Bitcoin protocols such as Coinjoin, onchain DLCs&lt;br/&gt;&amp;gt; and dual-funded LN channels. As those protocols are still in the early&lt;br/&gt;&amp;gt; phase of deployment, it doesn&amp;#39;t seem to have been executed in the wild for&lt;br/&gt;&amp;gt; now.  That said, considering that dual-funded are more efficient from a&lt;br/&gt;&amp;gt; liquidity standpoint, we can expect them to be widely relied on, once&lt;br/&gt;&amp;gt; Lightning enters in a more mature phase. At that point, it should become&lt;br/&gt;&amp;gt; economically rational for liquidity service providers to launch those DoS&lt;br/&gt;&amp;gt; attacks against their competitors to hijack user traffic.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Beyond that, presence of those DoSes will complicate the design and&lt;br/&gt;&amp;gt; deployment of multi-party Bitcoin protocols such as payment&lt;br/&gt;&amp;gt; pools/multi-party channels. Note, Lightning Pool isn&amp;#39;t affected as there is&lt;br/&gt;&amp;gt; a preliminary stage where batch participants are locked-in their funds&lt;br/&gt;&amp;gt; within an account witnessScript shared with the orchestrer.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, even assuming full-rbf, propagation of the multi-party funded&lt;br/&gt;&amp;gt; transactions can still be interfered with by an attacker, simply&lt;br/&gt;&amp;gt; broadcasting a double-spend with a feerate equivalent to the honest&lt;br/&gt;&amp;gt; transaction. However, it tightens the attack scenario to a scorched earth&lt;br/&gt;&amp;gt; approach, where the attacker has to commit equivalent fee-bumping reserve&lt;br/&gt;&amp;gt; to maintain the pinning and might lose the &amp;#34;competing&amp;#34; fees to miners.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # RBF opt-out as a Mempools Partitions Vector&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A longer-term issue is the risk of mempools malicious partitions, where an&lt;br/&gt;&amp;gt; attacker exploits network topology or divergence in mempools policies to&lt;br/&gt;&amp;gt; partition network mempools in different subsets. From then a wide range of&lt;br/&gt;&amp;gt; attacks can be envisioned such as package pinning [1], artificial&lt;br/&gt;&amp;gt; congestion to provoke LN channels closure or manipulation of&lt;br/&gt;&amp;gt; fee-estimator&amp;#39;s feerate (the Core&amp;#39;s one wouldn&amp;#39;t be affected as it relies&lt;br/&gt;&amp;gt; on block confirmation, though other fee estimators designs deployed across&lt;br/&gt;&amp;gt; the ecosystem are likely going to be affected).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Traditionally, mempools partitions have been gauged as a spontaneous&lt;br/&gt;&amp;gt; outcome of a distributed systems like Bitcoin p2p network and I&amp;#39;m not aware&lt;br/&gt;&amp;gt; it has been studied in-depth for adversarial purposes. Though, deployment&lt;br/&gt;&amp;gt; of second-layer&lt;br/&gt;&amp;gt; protocols, heavily relying on sanity of a local mempool for fee-estimation&lt;br/&gt;&amp;gt; and robust propagation of their time-sensitive transactions might lead to&lt;br/&gt;&amp;gt; reconsider this position. Acknowledging this, RBF opt-out is a low-cost&lt;br/&gt;&amp;gt; partitioning tool, of which the existence nullifies most of potential&lt;br/&gt;&amp;gt; progresses to mitigate malicious partitioning.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To resume, opt-in RBF doesn&amp;#39;t suit well deployment of robust second-layers&lt;br/&gt;&amp;gt; protocol, even if those issues are still early and deserve more research.&lt;br/&gt;&amp;gt; At the same time, I believe a meaningful subset of the ecosystem  are still&lt;br/&gt;&amp;gt; relying&lt;br/&gt;&amp;gt; on 0-confs transactions, even if their security is relying on far weaker&lt;br/&gt;&amp;gt; assumptions (opt-in RBF rule is a policy rule, not a consensus one) [2] A&lt;br/&gt;&amp;gt; rapid change of Core&amp;#39;s mempool rules would be harming their quality of&lt;br/&gt;&amp;gt; services and should be&lt;br/&gt;&amp;gt; weighed carefully. On the other hand, it would be great to nudge them&lt;br/&gt;&amp;gt; towards more secure handling of their 0-confs flows [3]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Let&amp;#39;s examine what could be deployed ecosystem-wise as enhancements to the&lt;br/&gt;&amp;gt; 0-confs security model.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Proactive security models : Double-spend Monitoring/Receiver-side&lt;br/&gt;&amp;gt; Fee-Topping with Package Relay&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From an attacker viewpoint, opt-in RBF isn&amp;#39;t a big blocker to successful&lt;br/&gt;&amp;gt; double-spends. Any motivated attacker can modify Core to mass-connect to a&lt;br/&gt;&amp;gt; wide portion of the network, announce txA to this subset, announce txA&amp;#39; to&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; merchant. TxA&amp;#39; propagation will be encumbered by the privacy-preserving&lt;br/&gt;&amp;gt; inventory timers (`OUTBOUND_INVENTORY_BROADCAST_INTERVAL`), of which an&lt;br/&gt;&amp;gt; attacker has no care to respect.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To detect a successful double-spend attempt, a Bitcoin service should run&lt;br/&gt;&amp;gt; few full-nodes with well-spread connection graphs and unlinkable between&lt;br/&gt;&amp;gt; them, to avoid being identified then maliciously partitioned from the rest&lt;br/&gt;&amp;gt; of the network.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe this tactic is already deployed by few Bitcoin services, and&lt;br/&gt;&amp;gt; even one can throw flame at it because it over consumes network resources&lt;br/&gt;&amp;gt; (bandwidth, connection slots, ...), it does procure a security advantage to&lt;br/&gt;&amp;gt; the ones doing it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One further improvement on top of this protection could be to react after&lt;br/&gt;&amp;gt; the double-spend detection by attaching a CPFP to the merchant transaction,&lt;br/&gt;&amp;gt; with a higher package feerate than the double-spend. Expected deployment of&lt;br/&gt;&amp;gt; package-relay as a p2p mechanism/mempool policy in Bitcoin Core should&lt;br/&gt;&amp;gt; enable it to do so.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Reactive security models : EconomicReputation-based Compensations&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another approach could be to react after the fact if a double-spend has&lt;br/&gt;&amp;gt; been qualified. If the sender is already known to the service provider, the&lt;br/&gt;&amp;gt; service account can be slashed.  If the sender is a low-trusted&lt;br/&gt;&amp;gt; counterparty to the merchant, &amp;#34;side-trust&amp;#34; models could be relied on. For&lt;br/&gt;&amp;gt; e.g a LN pubkey with a stacked reputation from your autopilot, LSATs, stake&lt;br/&gt;&amp;gt; certificates, a HTLC-as-a-fidelity-bond, ... The space is quite wide there&lt;br/&gt;&amp;gt; but I foresee those trust-minimized, decentralized solutions being adopted&lt;br/&gt;&amp;gt; by the LN ecosystem to patch the risks when you enter in a channel/HTLC&lt;br/&gt;&amp;gt; operation with an anonymous counterparty.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; What other cool new tools could be considered to enhance 0-confs security ?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To conclude, let&amp;#39;s avoid replaying the contentious threads of a few years&lt;br/&gt;&amp;gt; ago. What this new thread highlights is the fact that a transaction&lt;br/&gt;&amp;gt; relay/mempool acceptance policy might be beneficial to some class of&lt;br/&gt;&amp;gt; already-deployed&lt;br/&gt;&amp;gt; Bitcoin applications while being detrimental to newer ones. How do we&lt;br/&gt;&amp;gt; preserve the current interests of 0-confs users while enabling upcoming&lt;br/&gt;&amp;gt; interests of fancy L2s to flourish is a good conversation to have. I think.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If there is ecosystem agreement on switching to full-RBF, but 0.24 sounds&lt;br/&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; consistent deprecation process w.r.t to policy rules heavily relied-on by&lt;br/&gt;&amp;gt; Bitcoin users, if we do so let sets a precedent satisfying as many folks as&lt;br/&gt;&amp;gt; we can.&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; [1] See scenario 3 :&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;&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/10823#issuecomment-466485121&#34;&gt;https://github.com/bitcoin/bitcoin/pull/10823#issuecomment-466485121&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3] And the LN ecosystem does have an interest to fix zero-confs security,&lt;br/&gt;&amp;gt; if &amp;#34;turbo-channels&amp;#34;-like become normalized for mobile nodes&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/20211218/d033f8d9/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20211218/d033f8d9/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:01:35&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8jx6axz7hpshsgt5gxr3jmjsduw3xr6ml68ht4v50clfee4cc0fszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg2ffe7w</id>
    
      <title type="html">📅 Original date posted:2021-12-12 📝 Original message:Howdy, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8jx6axz7hpshsgt5gxr3jmjsduw3xr6ml68ht4v50clfee4cc0fszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg2ffe7w" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf48sukg89cja4rv3tyv3e43y83kyuund6dmm0urx93n2zwr2cw5g0s8dku&#39;&gt;nevent1q…8dku&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-12-12&lt;br/&gt;📝 Original message:Howdy, welcome to day 15!&lt;br/&gt;&lt;br/&gt;Today&amp;#39;s post covers a form of a mining pool that can be operated as sort of&lt;br/&gt;a map-reduce over blocks without any &amp;#34;infrastructure&amp;#34;.&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://rubin.io/bitcoin/2021/12/12/advent-15/&#34;&gt;https://rubin.io/bitcoin/2021/12/12/advent-15/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;There&amp;#39;s still some really open-ended questions (perhaps for y&amp;#39;all to&lt;br/&gt;consider) around how to select an analyze the choice of window and payout&lt;br/&gt;functions, but something like this could alleviate a lot of the&lt;br/&gt;centralization pressures typically faced by pools.&lt;br/&gt;&lt;br/&gt;Notably, compared to previous attempts, combining the payment pool payout&lt;br/&gt;with this concept means that there is practically very little on-chain&lt;br/&gt;overhead from this approach as the chain-load&lt;br/&gt;for including payouts in every block is deferred for future cooperation&lt;br/&gt;among miners. Although that can be considered cooperation itself, if you&lt;br/&gt;think of it like a pipeline, the cooperation happens out of band from&lt;br/&gt;mining and block production so it really is coordination free to mine.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20211212/ac3c5c3d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20211212/ac3c5c3d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:01:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw2krfcl75mwuu420v9w9hcyzv0sg7843gx9at8jfqr5ayf25mq9czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgp09tk3</id>
    
      <title type="html">📅 Original date posted:2021-10-11 📝 Original message:*&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw2krfcl75mwuu420v9w9hcyzv0sg7843gx9at8jfqr5ayf25mq9czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgp09tk3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2cwzgz0m7y2jqge0mx0uajjr4lwl3trum0u29uxhxvpdqapuqp6spku7hs&#39;&gt;nevent1q…u7hs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-10-11&lt;br/&gt;📝 Original message:*&amp;gt; ... in this post I will argue against frequent soft forks with a single&lt;br/&gt;or minimal*&lt;br/&gt;*&amp;gt; set of features and instead argue for infrequent soft forks with batches*&lt;br/&gt;*&amp;gt; of features.*&lt;br/&gt;&lt;br/&gt;I think this type of development has been discussed in the past and has&lt;br/&gt;been rejected.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;from: Matt Corallo&amp;#39;s post:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017547.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017547.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*Matt: Follow the will of the community, irrespective of individuals&lt;br/&gt;orunreasoned objection, but without ever overruling any&lt;br/&gt;reasonableobjection. Recent history also includes &amp;#34;objection&amp;#34; to soft forks&lt;br/&gt;in theform of &amp;#34;this is bad because it doesn&amp;#39;t fix a different problem I&lt;br/&gt;wantfixed ASAP&amp;#34;. I don&amp;#39;t think anyone would argue this qualifies as&lt;br/&gt;areasonable objection to a change, and we should be in a place, as&lt;br/&gt;acommunity (never as developers or purely one group), to ignore&lt;br/&gt;suchobjections and make forward progress in spite of them. We don&amp;#39;t&lt;br/&gt;makegood engineering decisions by &amp;#34;bundling&amp;#34; unrelated features together to*&lt;br/&gt;*enable political football and compromise.*&lt;br/&gt;&lt;br/&gt;*AJ: - improvements: changes might not make everyone better off, but we*&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*   don&amp;#39;t want changes to screw anyone over either -- pareto   improvements&lt;br/&gt;in economics, &amp;#34;first, do no harm&amp;#34;, etc. (if we get this   right, there&amp;#39;s no&lt;br/&gt;need to make compromises and bundle multiple   flawed proposals so that&lt;br/&gt;everyone&amp;#39;s an equal mix of happy and*&lt;br/&gt;*   miserable)*&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I think Matt and AJ&amp;#39;s PoV is widely reflected in the community that&lt;br/&gt;bundling changes leads to the inclusion of suboptimal features.&lt;br/&gt;&lt;br/&gt;This also has strong precedent in other important technical bodies, e.g.&lt;br/&gt;from &lt;a href=&#34;https://datatracker.ietf.org/doc/html/rfc7282&#34;&gt;https://datatracker.ietf.org/doc/html/rfc7282&lt;/a&gt; On Consensus and Humming&lt;br/&gt;in the IETF.&lt;br/&gt;&lt;br/&gt;      Even worse is the &amp;#34;horse-trading&amp;#34; sort of compromise: &amp;#34;I object to&lt;br/&gt;   your proposal for such-and-so reasons.  You object to my proposal for&lt;br/&gt;   this-and-that reason.  Neither of us agree.  If you stop objecting to&lt;br/&gt;   my proposal, I&amp;#39;ll stop objecting to your proposal and we&amp;#39;ll put them&lt;br/&gt;   both in.&amp;#34;  That again results in an &amp;#34;agreement&amp;#34; of sorts, but instead&lt;br/&gt;   of just one outstanding unaddressed issue, this sort of compromise&lt;br/&gt;     results in two, again ignoring them for the sake of expedience.&lt;br/&gt;&lt;br/&gt;   These sorts of &amp;#34;capitulation&amp;#34; or &amp;#34;horse-trading&amp;#34; compromises have no&lt;br/&gt;   place in consensus decision making.  In each case, a chair who looks&lt;br/&gt;   for &amp;#34;agreement&amp;#34; might find it in these examples because it appears&lt;br/&gt;   that people have &amp;#34;agreed&amp;#34;.  But answering technical disagreements is&lt;br/&gt;   what is needed to achieve consensus, sometimes even when the people&lt;br/&gt;&lt;br/&gt;      who stated the disagreements no longer wish to discuss them.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;If you would like to advocate bitcoin development run counter to that,&lt;br/&gt;you should provide a much stronger refutation of these engineering&lt;br/&gt;norms.&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/20211011/7c82c14f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20211011/7c82c14f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:00:02&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdnnslc5rln2u85qh2uw9fzux6t090g0pwa2xmpt5mu4zgdqhcefczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgg7hwkx</id>
    
      <title type="html">📅 Original date posted:2021-09-07 📝 Original message:If you ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdnnslc5rln2u85qh2uw9fzux6t090g0pwa2xmpt5mu4zgdqhcefczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgg7hwkx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsflv9u2ah7hz3d4safzz0vpruv35cxmya5rndffsatj35lg8tw9hqyc0z0a&#39;&gt;nevent1q…0z0a&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-09-07&lt;br/&gt;📝 Original message:If you make the to be reorged flag 2 bits, 1 bit can mark final block and&lt;br/&gt;the other can mark to be reorged.&lt;br/&gt;&lt;br/&gt;That way the nodes opting into reorg can see the reorg and ignore the final&lt;br/&gt;blocks (until a certain time? Or until it&amp;#39;s via a reorg?), and the nodes&lt;br/&gt;wanting not to see reorgs get continuous service without disruption&lt;br/&gt;&lt;br/&gt;On Tue, Sep 7, 2021, 9:12 AM 0xB10C 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,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; tl;dr: We want to make reorgs on SigNet a reality and are looking for&lt;br/&gt;&amp;gt; feedback on approach and parameters.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One of the ideas for SigNet is the possibility for it to be reliably&lt;br/&gt;&amp;gt; unreliable, for example, planned chain reorganizations. These have not&lt;br/&gt;&amp;gt; been implemented yet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; My summerofbitcoin.org mentee Nikhil Bartwal and I have been looking at&lt;br/&gt;&amp;gt; implementing support for reorgs on SigNet. We are looking for feedback&lt;br/&gt;&amp;gt; on which approach and parameters to use. Please consider answering the&lt;br/&gt;&amp;gt; questions below if you or your company is interested in chain&lt;br/&gt;&amp;gt; reorganizations on SigNet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With feedback from AJ and Kalle Alm (thanks again!), we came up with two&lt;br/&gt;&amp;gt; scenarios that could be implemented in the current SigNet miner script&lt;br/&gt;&amp;gt; [0]. Both would trigger automatically in a fixed block interval.&lt;br/&gt;&amp;gt; Scenario 1 simulates a race scenario where two chains compete for D&lt;br/&gt;&amp;gt; blocks. Scenario 2 simulates a chain rollback where the top D blocks get&lt;br/&gt;&amp;gt; replaced by a chain that outgrows the earlier branch.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; AJ proposed to allow SigNet users to opt-out of reorgs in case they&lt;br/&gt;&amp;gt; explicitly want to remain unaffected. This can be done by setting a&lt;br/&gt;&amp;gt; to-be-reorged version bit flag on the blocks that won&amp;#39;t end up in the&lt;br/&gt;&amp;gt; most work chain. Node operators could choose not to accept to-be-reorged&lt;br/&gt;&amp;gt; SigNet blocks with this flag set via a configuration argument.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The reorg-interval X very much depends on the user&amp;#39;s needs. One could&lt;br/&gt;&amp;gt; argue that there should be, for example, three reorgs per day, each 48&lt;br/&gt;&amp;gt; blocks apart. Such a short reorg interval allows developers in all time&lt;br/&gt;&amp;gt; zones to be awake during one or two reorgs per day. Developers don&amp;#39;t&lt;br/&gt;&amp;gt; need to wait for, for example, a week until they can test their reorgs&lt;br/&gt;&amp;gt; next. However, too frequent reorgs could hinder other SigNet users.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We propose that the reorg depth D is deterministically random between a&lt;br/&gt;&amp;gt; minimum and a maximum based on, e.g., the block hash or the nonce of the&lt;br/&gt;&amp;gt; last block before the reorg. Compared to a local randint() based&lt;br/&gt;&amp;gt; implementation, this allows reorg-handling tests and external tools to&lt;br/&gt;&amp;gt; calculate the expected reorg depth.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Scenario 1: Race between two chains&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For this scenario, at least two nodes and miner scripts need to be&lt;br/&gt;&amp;gt; running. An always-miner A continuously produces blocks and rejects&lt;br/&gt;&amp;gt; blocks with the to-be-reorged version bit flag set. And a race-miner R&lt;br/&gt;&amp;gt; that only mines D blocks at the start of each interval and then waits X&lt;br/&gt;&amp;gt; blocks. A and R both have the same hash rate. Assuming both are well&lt;br/&gt;&amp;gt; connected to the network, it&amp;#39;s random which miner will first mine and&lt;br/&gt;&amp;gt; propagate a block. In the end, the A miner chain will always win the race.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Scenario 2: Chain rollback&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This scenario only requires one miner and Bitcoin Core node but also&lt;br/&gt;&amp;gt; works in a multiminer setup. The miners mine D blocks with the&lt;br/&gt;&amp;gt; to-be-reorged version bit flag set at the start of the interval. After&lt;br/&gt;&amp;gt; allowing the block at height X&#43;D to propagate, they invalidate the block&lt;br/&gt;&amp;gt; at height X&#43;1 and start mining on block X again. This time without&lt;br/&gt;&amp;gt; setting the to-be-reorged version bit flag. Non-miner nodes will reorg&lt;br/&gt;&amp;gt; to the new tip at height X&#43;D&#43;1, and the first-seen branch stalls.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Questions&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     1. How do you currently test your applications reorg handling? Do&lt;br/&gt;&amp;gt;        the two discussed scenarios (race and chain rollback) cover your&lt;br/&gt;&amp;gt;        needs? Are we missing something you&amp;#39;d find helpful?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     2. How often should reorgs happen on the default SigNet? Should&lt;br/&gt;&amp;gt;        there be multiple reorgs a day (e.g., every 48 or 72 blocks&lt;br/&gt;&amp;gt;        assuming 144 blocks per day) as your engineers need to be awake?&lt;br/&gt;&amp;gt;        Do you favor less frequent reorgs (once per week or month)? Why?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     3. How deep should the reorgs be on average? Do you want to test&lt;br/&gt;&amp;gt;        deeper reorgs (10&#43; blocks) too?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; # Next Steps&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We will likely implement Scenario 1, the race between two chains, first.&lt;br/&gt;&amp;gt; We&amp;#39;ll set up a public test-SigNet along with a faucet, block explorer,&lt;br/&gt;&amp;gt; and a block tree visualization. If there is interest in the second&lt;br/&gt;&amp;gt; approach, chain rollbacks can be implemented too. Future work will add&lt;br/&gt;&amp;gt; the possibility to include conflicting transactions in the two branches.&lt;br/&gt;&amp;gt; After enough testing, the default SigNet can start to do periodical&lt;br/&gt;&amp;gt; reorgs, too.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks,&lt;br/&gt;&amp;gt; 0xB10C&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0]: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/contrib/signet/miner&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/contrib/signet/miner&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/20210907/4f2f687d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210907/4f2f687d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:58:47&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstus5ynm6dv2s9z40s00yyh4x6jnv5agxzh3pezvh0r0nc5lajgqgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgr2j8ct</id>
    
      <title type="html">📅 Original date posted:2021-07-07 📝 Original message:Dear ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstus5ynm6dv2s9z40s00yyh4x6jnv5agxzh3pezvh0r0nc5lajgqgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgr2j8ct" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrrv6a80sw45gz5v8jcldjewpkzd8dgcpcuh577cwm204hjfv2klc8ha9nc&#39;&gt;nevent1q…a9nc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-07&lt;br/&gt;📝 Original message:Dear Bitcoin Devs,&lt;br/&gt;&lt;br/&gt;As mentioned previously, OP_CAT (or similar operation) can be used to make&lt;br/&gt;Bitcoin &amp;#34;quantum safe&amp;#34; by signing an EC signature. This should work in both&lt;br/&gt;Segwit V0 and Tapscript, although you have to use HASH160 for it to fit in&lt;br/&gt;Segwit V0.&lt;br/&gt;&lt;br/&gt;See [my blog](&lt;a href=&#34;https://rubin.io/blog/2021/07/06/quantum-bitcoin/&#34;&gt;https://rubin.io/blog/2021/07/06/quantum-bitcoin/&lt;/a&gt;) for the&lt;br/&gt;specific construction, reproduced below.&lt;br/&gt;&lt;br/&gt;Yet another entry to the &amp;#34;OP_CAT can do that too&amp;#34; list.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;-----&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I recently published [a blog&lt;br/&gt;post](&lt;a href=&#34;https://rubin.io/blog/2021/07/02/signing-5-bytes/&#34;&gt;https://rubin.io/blog/2021/07/02/signing-5-bytes/&lt;/a&gt;) about signing up&lt;br/&gt;to a&lt;br/&gt;5 byte value using Bitcoin script arithmetic and Lamport signatures.&lt;br/&gt;&lt;br/&gt;By itself, this is neat, but a little limited. What if we could sign longer&lt;br/&gt;messages? If we can sign up to 20 bytes, we could sign a HASH160 digest&lt;br/&gt;which&lt;br/&gt;is most likely quantum safe...&lt;br/&gt;&lt;br/&gt;What would it mean if we signed the HASH160 digest of a signature? What the&lt;br/&gt;what? Why would we do that?&lt;br/&gt;&lt;br/&gt;Well, as it turns out, even if a quantum computer were able to crack ECDSA,&lt;br/&gt;it&lt;br/&gt;would yield revealing the private key but not the ability to malleate the&lt;br/&gt;content of what was actually signed.  I asked my good friend and&lt;br/&gt;cryptographer&lt;br/&gt;[Madars Virza](&lt;a href=&#34;https://madars.org/&#34;&gt;https://madars.org/&lt;/a&gt;) if my intuition was correct, and he&lt;br/&gt;confirmed that it should be sufficient, but it&amp;#39;s definitely worth closer&lt;br/&gt;analysis before relying on this. While the ECDSA signature can be malleated&lt;br/&gt;to a&lt;br/&gt;different, negative form, if the signature is otherwise made immalleable&lt;br/&gt;there&lt;br/&gt;should only be one value the commitment can be opened to.&lt;br/&gt;&lt;br/&gt;If we required the ECDSA signature be signed with a quantum proof signature&lt;br/&gt;algorithm, then we&amp;#39;d have a quantum proof Bitcoin! And the 5 byte signing&lt;br/&gt;scheme&lt;br/&gt;we discussed previously is a Lamport signature, which is quantum secure.&lt;br/&gt;Unfortunately, we need at least 20 contiguous bytes... so we need some sort&lt;br/&gt;of&lt;br/&gt;OP\_CAT like operation.&lt;br/&gt;&lt;br/&gt;OP\_CAT can&amp;#39;t be directly soft forked to Segwit v0 because it modifies the&lt;br/&gt;stack, so instead we&amp;#39;ll (for simplicity) also show how to use a new opcode&lt;br/&gt;that&lt;br/&gt;uses verify semantics, OP\_SUBSTRINGEQUALVERIFY that checks a splice of a&lt;br/&gt;string&lt;br/&gt;for equality.&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;... FOR j in 0..=5&lt;br/&gt;    &amp;lt;0&amp;gt;&lt;br/&gt;    ... FOR i in 0..=31&lt;br/&gt;        SWAP hash160 DUP &amp;lt;H(K_j_i_1)&amp;gt; EQUAL IF DROP &amp;lt;2**i&amp;gt; ADD ELSE&lt;br/&gt;&amp;lt;H(K_j_i_0)&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;    ... END FOR&lt;br/&gt;    TOALTSTACK&lt;br/&gt;... END FOR&lt;br/&gt;&lt;br/&gt;DUP HASH160&lt;br/&gt;&lt;br/&gt;... IF CAT AVAILABLE&lt;br/&gt;    FROMALTSTACK&lt;br/&gt;    ... FOR j in 0..=5&lt;br/&gt;        FROMALTSTACK&lt;br/&gt;        CAT&lt;br/&gt;    ... END FOR&lt;br/&gt;    EQUALVERIFY&lt;br/&gt;... ELSE SUBSTRINGEQUALVERIFY AVAILABLE&lt;br/&gt;    ... FOR j in 0..=5&lt;br/&gt;        FROMALTSTACK &amp;lt;0&#43;j*4&amp;gt; &amp;lt;4&#43;j*4&amp;gt; SUBSTRINGEQUALVERIFY DROP DROP DROP&lt;br/&gt;    ...  END FOR&lt;br/&gt;    DROP&lt;br/&gt;... END IF&lt;br/&gt;&lt;br/&gt;&amp;lt;pk&amp;gt; CHECKSIG&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;That&amp;#39;s a long script... but will it fit? We need to verify 20 bytes of&lt;br/&gt;message&lt;br/&gt;each bit takes around 10 bytes script, an average of 3.375 bytes per number&lt;br/&gt;(counting pushes), and two 21 bytes keys = 55.375 bytes of program space&lt;br/&gt;and 21&lt;br/&gt;bytes of witness element per bit.&lt;br/&gt;&lt;br/&gt;It fits! `20*8*55.375 = 8860`, which leaves 1140 bytes less than the limit&lt;br/&gt;for&lt;br/&gt;the rest of the logic, which is plenty (around 15-40 bytes required for the&lt;br/&gt;rest&lt;br/&gt;of the logic, leaving 1100 free for custom signature checking). The stack&lt;br/&gt;size&lt;br/&gt;is 160 elements for the hash gadget, 3360 bytes.&lt;br/&gt;&lt;br/&gt;This can probably be made a bit more efficient by expanding to a ternary&lt;br/&gt;representation.&lt;br/&gt;&lt;br/&gt;```&lt;br/&gt;        SWAP hash160 DUP &amp;lt;H(K_j_i_0)&amp;gt; EQUAL  IF DROP  ELSE &amp;lt;3**i&amp;gt; SWAP DUP&lt;br/&gt;&amp;lt;H(K_j_i_T)&amp;gt; EQUAL IF DROP SUB ELSE &amp;lt;H(K_j_i_1)&amp;gt; EQUALVERIFY ADD  ENDIF&lt;br/&gt;ENDIF&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;This should bring it up to roughly 85 bytes per trit, and there should be&lt;br/&gt;101&lt;br/&gt;trits (`log(2**160)/log(3) == 100.94`), so about 8560 bytes... a bit&lt;br/&gt;cheaper!&lt;br/&gt;But the witness stack is &amp;#34;only&amp;#34; `2121` bytes...&lt;br/&gt;&lt;br/&gt;As a homework exercise, maybe someone can prove the optimal choice of radix&lt;br/&gt;for&lt;br/&gt;this protocol... My guess is that base 4 is optimal!&lt;br/&gt;&lt;br/&gt;## Taproot?&lt;br/&gt;&lt;br/&gt;What about Taproot? As far as I&amp;#39;m aware the commitment scheme (`Q = pG &#43;&lt;br/&gt;hash(pG&lt;br/&gt;|| m)G`) can be securely opened to m even with a quantum computer (finding&lt;br/&gt;`q`&lt;br/&gt;such that `qG = Q` might be trivial, but suppose key path was disabled, then&lt;br/&gt;finding m and p such that the taproot equation holds should be difficult&lt;br/&gt;because&lt;br/&gt;of the hash, but I&amp;#39;d need to certify that claim better).  Therefore this&lt;br/&gt;script can nest inside of a Tapscript path -- Tapscript also does not&lt;br/&gt;impose a&lt;br/&gt;length limit, 32 byte hashes could be used as well.&lt;br/&gt;&lt;br/&gt;Further, to make keys reusable, there could be many Lamport keys comitted&lt;br/&gt;inside&lt;br/&gt;a taproot tree so that an address could be used for thousands of times&lt;br/&gt;before&lt;br/&gt;expiring. This could be used as a measure to protect accidental use rather&lt;br/&gt;than&lt;br/&gt;to support it.&lt;br/&gt;&lt;br/&gt;Lastly, Schnorr actually has a stronger non-malleability property than&lt;br/&gt;ECDSA,&lt;br/&gt;the signatures will be binding to the approved transaction and once Lamport&lt;br/&gt;signed, even a quantum computer could not steal the funds.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20210706/3942eac0/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210706/3942eac0/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:56:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8ggt0jv560wkxru9ezyz5g4yhmunk2938yhc00kw0d22rj34haqgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgz93652</id>
    
      <title type="html">📅 Original date posted:2021-07-06 📝 Original message:heh -- ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8ggt0jv560wkxru9ezyz5g4yhmunk2938yhc00kw0d22rj34haqgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgz93652" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsz6agr6p3tl4qauv2zaqt3mzsuwx0qnkaj934e5w873u3mvqennnqlryyx5&#39;&gt;nevent1q…yyx5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-06&lt;br/&gt;📝 Original message:heh -- I pointed out these evil multisig covenants in 2015 :)&lt;br/&gt;&lt;a href=&#34;https://medium.com/@jeremyrubin/regulating-bitcoin-by-mining-the-regulator-miner-attack-c8fd51185b78&#34;&gt;https://medium.com/@jeremyrubin/regulating-bitcoin-by-mining-the-regulator-miner-attack-c8fd51185b78&lt;/a&gt;&lt;br/&gt;I&amp;#39;m relatively unconcerned by it except to the extent that mining&lt;br/&gt;centralizes to the point of censoring other traffic.&lt;br/&gt;&lt;br/&gt;Overall, I think this is a great conversation to be having.&lt;br/&gt;&lt;br/&gt;However, I want to push back on David&amp;#39;s claim that  &amp;#34;Respecting the&lt;br/&gt;concerns of others doesn&amp;#39;t require lobotomizing useful tools.&amp;#34;.&lt;br/&gt;&lt;br/&gt;CHECKSIGFROMSTACK is a primitive and the opcode is not being nerfed in any&lt;br/&gt;way shape or form. The argument here is that doing CSFS and not CAT is&lt;br/&gt;nerfing CSFS... but CSFS is an independently useful and cool opcode that&lt;br/&gt;has many of it&amp;#39;s own merits.&lt;br/&gt;&lt;br/&gt;Further, as described in my [blog post](&lt;br/&gt;&lt;a href=&#34;https://rubin.io/blog/2021/07/02/covenants/&#34;&gt;https://rubin.io/blog/2021/07/02/covenants/&lt;/a&gt;), CSFS has very high &amp;#34;design&lt;br/&gt;specificity&amp;#34;... that is there&amp;#39;s not *that* many design choices that could&lt;br/&gt;possibly go into it. It&amp;#39;s checking a signature. From the stack. That&amp;#39;s all&lt;br/&gt;folks! There are no design compromises in it. No lobotomy.&lt;br/&gt;&lt;br/&gt;OP_CAT is more or less completely unrelated to CSFS. As Andrew has&lt;br/&gt;[demonstrated](&lt;br/&gt;&lt;a href=&#34;https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html&#34;&gt;https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html&lt;/a&gt;),&lt;br/&gt;*just* OP_CAT alone (no CSFS) gives you covenants (albeit in a hacky way)&lt;br/&gt;with Schnorr.&lt;br/&gt;&lt;br/&gt;I think roconnor agrees that CAT(&#43;CSFS?) are not really a &amp;#34;fantastic&amp;#34; way&lt;br/&gt;to do covenants, that there are more direct approaches that will be better&lt;br/&gt;or neccessary such as TWEAK or UPDATETAPLEAF. Let&amp;#39;s work on those! But&lt;br/&gt;let&amp;#39;s also not hold up progress on other useful things while those are&lt;br/&gt;brewing.&lt;br/&gt;&lt;br/&gt;Non-Redundancy should be a non-goal for script -- although we strive to be&lt;br/&gt;minimal, redundancy is inevitable. For example, OP_SWAP has identical&lt;br/&gt;semantics to &amp;lt;1&amp;gt; ROLL, but SWAP is a common enough use that it is pragmatic&lt;br/&gt;to assign it an opcode and OP_ROLL does something distinctly enhanced.&lt;br/&gt;Similarly, even if we add CAT we will surely come up with saner ways to&lt;br/&gt;implement covenant logic than Andrew&amp;#39;s Schnorr tricks.&lt;br/&gt;&lt;br/&gt;CTV in particular is designed to be a part of that story -- enough&lt;br/&gt;functionality w/o OP_CAT to work *today* and serve a purpose long into the&lt;br/&gt;future, but with OP_CAT (or shastream preferably) enhances it&amp;#39;s&lt;br/&gt;functionality in a useful way and with introspection opcodes (perhaps like&lt;br/&gt;those being developed by elements) further gains functionality. Perhaps the&lt;br/&gt;functionality available today will be redundant with a future way of doing&lt;br/&gt;things, but we can only see so far into the future. However, we can see&lt;br/&gt;that there are good things to build with it today.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s the inverse of a lobotomy. Independent components that can come&lt;br/&gt;together for a newer greater purpose rather than parts being torn apart&lt;br/&gt;irreparably.&lt;br/&gt;&lt;br/&gt;In the future when we have specific use cases in mind that *aren&amp;#39;t* served&lt;br/&gt;well (either efficiently or at all) by the existing primitives, it&amp;#39;s&lt;br/&gt;completely acceptable to add something new even if it makes an existing&lt;br/&gt;feature redundant. APO, for example, will be redundant (afaict) will Glen&lt;br/&gt;Willen&amp;#39;s [Bitmask SigHash Flags](&lt;br/&gt;&lt;a href=&#34;https://bc-2.jp/archive/season2/materials/0203_NewElementsFeaturesEn.pdf&#34;&gt;https://bc-2.jp/archive/season2/materials/0203_NewElementsFeaturesEn.pdf&lt;/a&gt;)&lt;br/&gt;should we ever get those.&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20210706/4bf5525a/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210706/4bf5525a/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:56:30&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf4lxcsnurtnykh36zt6mrr0aqxff0tdzmjjeslhvpyg6nwuu6jlqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgeykw8j</id>
    
      <title type="html">📅 Original date posted:2021-07-03 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf4lxcsnurtnykh36zt6mrr0aqxff0tdzmjjeslhvpyg6nwuu6jlqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgeykw8j" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswxpsd26vyccdcfyqvkc6nz9f9llr00mdrr9fc4uqm0jp7d0eslaq86hq2l&#39;&gt;nevent1q…hq2l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-03&lt;br/&gt;📝 Original message:Awesome to hear that!&lt;br/&gt;&lt;br/&gt;Actually I don&amp;#39;t think I did know (or I forgot/didn&amp;#39;t catch it) that there&lt;br/&gt;was an updated spec for elements, I searched around for what I could find&lt;br/&gt;and came up empty handed. Do you have any links for that? That sounds&lt;br/&gt;perfect to me.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sat, Jul 3, 2021, 10:50 AM Russell O&amp;#39;Connor &amp;lt;roconnor at blockstream.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi Jermy,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As you are aware, we, and by we I mean mostly Sanket, are developing an&lt;br/&gt;&amp;gt; updated OP_CHECKSIGFROMSTACK implementation for tapscript on elements.  The&lt;br/&gt;&amp;gt; plan here would be to effectively support the an interface to the&lt;br/&gt;&amp;gt; variable-length extension of BIP-0340 schnorr signatures.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; BIP-0340 would dispense with DER encoding (good riddance).&lt;br/&gt;&amp;gt; BIP-0340 signatures are batch verifiable along with other BIP-0340&lt;br/&gt;&amp;gt; transaction signatures and taproot tweak verification.&lt;br/&gt;&amp;gt; Support for variable length messages in BIP-0340 has been discussed in &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/sipa/bips/issues/207&amp;gt&#34;&gt;https://github.com/sipa/bips/issues/207&amp;gt&lt;/a&gt;; and an implementation has&lt;br/&gt;&amp;gt; recently been merged in &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin-core/secp256k1/pull/844&amp;gt&#34;&gt;https://github.com/bitcoin-core/secp256k1/pull/844&amp;gt&lt;/a&gt;;.  The BIP has not yet&lt;br/&gt;&amp;gt; been updated but the difference is that the message m does not have to be&lt;br/&gt;&amp;gt; 32-bytes (it is recommended that the message be a 32-bit tagged hash or a&lt;br/&gt;&amp;gt; message with a 64-bit application specific prefix). The CHECKSIGFROMSTACK&lt;br/&gt;&amp;gt; operation (in tapscript) would use a stack item for this m value to&lt;br/&gt;&amp;gt; BIP-0340 signature verification and would not necessarily have to be 32&lt;br/&gt;&amp;gt; bytes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think this design we are aiming for would be perfectly suited for&lt;br/&gt;&amp;gt; Bitcoin as well.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sat, Jul 3, 2021 at 12:32 PM Jeremy 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; Reproduced below is the BIP text from Bitcoin Cash&amp;#39;s (MIT-Licensed)&lt;br/&gt;&amp;gt;&amp;gt; specification for &amp;#34;CheckDataSig&amp;#34;, more or less the same thing as&lt;br/&gt;&amp;gt;&amp;gt; CHECKSIGFROMSTACK&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/op_checkdatasig.md&#34;&gt;https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/op_checkdatasig.md&lt;/a&gt;.&lt;br/&gt;&amp;gt;&amp;gt; In contrast to Element&amp;#39;s implementation, it does not have Element&amp;#39;s bugs&lt;br/&gt;&amp;gt;&amp;gt; around verify semantics and uses the nullfail rule, and there is a&lt;br/&gt;&amp;gt;&amp;gt; specification document so it seemed like the easiest starting point for&lt;br/&gt;&amp;gt;&amp;gt; discussion v.s. drafting something from scratch.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Does anyone have any issue with adapting this exact text and&lt;br/&gt;&amp;gt;&amp;gt; implementation to a BIP for Bitcoin using 2 OP_SUCCESSX opcodes?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Note that with *just* CheckSigFromStack, while you can do some very&lt;br/&gt;&amp;gt;&amp;gt; valuable use cases, but without OP_CAT it does not enable sophisticated&lt;br/&gt;&amp;gt;&amp;gt; covenants (and as per&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html&#34;&gt;https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; just CAT alone enables such uses).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Design questions worth considering as modifications:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; 1. Should CSFS require some sort of tagged hash? Very likely answer is no&lt;br/&gt;&amp;gt;&amp;gt; – tags interfere with certain use cases&lt;br/&gt;&amp;gt;&amp;gt; 2. Should CSFS split the signature’s R &amp;amp; S value stack items for some&lt;br/&gt;&amp;gt;&amp;gt; applications that otherwise may require OP_CAT? E.g. using a pinned R value&lt;br/&gt;&amp;gt;&amp;gt; allows you to extract a private key if ever double signed, using 2 R values&lt;br/&gt;&amp;gt;&amp;gt; allows pay-to-reveal-key contracts. Most likely answer is no, if that is&lt;br/&gt;&amp;gt;&amp;gt; desired then OP_CAT can be introduced&lt;br/&gt;&amp;gt;&amp;gt; 3. Should CSFS support a cheap way to reference the taproot internal or&lt;br/&gt;&amp;gt;&amp;gt; external key? Perhaps, can be handled with undefined upgradeable keytypes.&lt;br/&gt;&amp;gt;&amp;gt; One might want to use the internal key, if the signed data should be valid&lt;br/&gt;&amp;gt;&amp;gt; independent of the tapscript tree. One might want to use the external key,&lt;br/&gt;&amp;gt;&amp;gt; if the data should only be valid for a single tapscript key &#43; tree.&lt;br/&gt;&amp;gt;&amp;gt; 4. Should invalid public keys types be a NOP to support future extended&lt;br/&gt;&amp;gt;&amp;gt; pubkey types?&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; Best,&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Jeremy&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; layout: specification&lt;br/&gt;&amp;gt;&amp;gt; title: OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY Specification&lt;br/&gt;&amp;gt;&amp;gt; category: spec&lt;br/&gt;&amp;gt;&amp;gt; date: 2018-08-20&lt;br/&gt;&amp;gt;&amp;gt; activation: 1542300000&lt;br/&gt;&amp;gt;&amp;gt; version: 0.6&lt;br/&gt;&amp;gt;&amp;gt; ---&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG&lt;br/&gt;&amp;gt;&amp;gt; ===============&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY check whether a signature is valid with respect to a message and a public key.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG permits data to be imported into a script, and have its validity checked against some signing authority such as an &amp;#34;Oracle&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY are designed to be implemented similarly to OP_CHECKSIG [1]. Conceptually, one could imagine OP_CHECKSIG functionality being replaced by OP_CHECKDATASIG, along with a separate Op Code to create a hash from the transaction based on the SigHash algorithm.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG Specification&lt;br/&gt;&amp;gt;&amp;gt; -----------------------------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Semantics&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG fails immediately if the stack is not well formed. To be well formed, the stack must contain at least three elements [`&amp;lt;sig&amp;gt;`, `&amp;lt;msg&amp;gt;`, `&amp;lt;pubKey&amp;gt;`] in this order where `&amp;lt;pubKey&amp;gt;` is the top element and&lt;br/&gt;&amp;gt;&amp;gt;   * `&amp;lt;pubKey&amp;gt;` must be a validly encoded public key&lt;br/&gt;&amp;gt;&amp;gt;   * `&amp;lt;msg&amp;gt;` can be any string&lt;br/&gt;&amp;gt;&amp;gt;   * `&amp;lt;sig&amp;gt;` must follow the strict DER encoding as described in [2] and the S-value of `&amp;lt;sig&amp;gt;` must be at most the curve order divided by 2 as described in [3]&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If the stack is well formed, then OP_CHECKDATASIG pops the top three elements [`&amp;lt;sig&amp;gt;`, `&amp;lt;msg&amp;gt;`, `&amp;lt;pubKey&amp;gt;`] from the stack and pushes true onto the stack if `&amp;lt;sig&amp;gt;` is valid with respect to the raw single-SHA256 hash of `&amp;lt;msg&amp;gt;` and `&amp;lt;pubKey&amp;gt;` using the secp256k1 elliptic curve. Otherwise, it pops three elements and pushes false onto the stack in the case that `&amp;lt;sig&amp;gt;` is the empty string and fails in all other cases.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Nullfail is enforced the same as for OP_CHECKSIG [3]. If the signature does not match the supplied public key and message hash, and the signature is not an empty byte array, the entire script fails.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Opcode Number&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIG uses the previously unused opcode number 186 (0xba in hex encoding)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### SigOps&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Signature operations accounting for OP_CHECKDATASIG shall be calculated the same as OP_CHECKSIG. This means that each OP_CHECKDATASIG shall be counted as one (1) SigOp.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Activation&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Use of OP_CHECKDATASIG, unless occuring in an unexecuted OP_IF branch, will make the transaction invalid if it is included in a block where the median timestamp of the prior 11 blocks is less than 1542300000.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Unit Tests&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if 15 November 2018 protocol upgrade is not yet activated.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; OP_CHECKDATASIG` fails if there are fewer than 3 items on stack.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if `&amp;lt;pubKey&amp;gt;` is not a validly encoded public key.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if `&amp;lt;sig&amp;gt;` is not a validly encoded signature with strict DER encoding.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if signature `&amp;lt;sig&amp;gt;` is not empty and does not pass the Low S check.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if signature `&amp;lt;sig&amp;gt;` is not empty and does not pass signature validation of `&amp;lt;msg&amp;gt;` and `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` pops three elements and pushes false onto the stack if `&amp;lt;sig&amp;gt;` is an empty byte array.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` pops three elements and pushes true onto the stack if `&amp;lt;sig&amp;gt;` is a valid signature of `&amp;lt;msg&amp;gt;` with respect to `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIGVERIFY Specification&lt;br/&gt;&amp;gt;&amp;gt; -----------------------------------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Semantics&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIGVERIFY is equivalent to OP_CHECKDATASIG followed by OP_VERIFY. It leaves nothing on the stack, and will cause the script to fail immediately if the signature check does not pass.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Opcode Number&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIGVERIFY uses the previously unused opcode number 187 (0xbb in hex encoding)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### SigOps&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Signature operations accounting for OP_CHECKDATASIGVERIFY shall be calculated the same as OP_CHECKSIGVERIFY. This means that each OP_CHECKDATASIGVERIFY shall be counted as one (1) SigOp.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Activation&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Use of OP_CHECKDATASIGVERIFY, unless occuring in an unexecuted OP_IF branch, will make the transaction invalid if it is included in a block where the median timestamp of the prior 11 blocks is less than 1542300000.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### Unit Tests&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if 15 November 2018 protocol upgrade is not yet activated.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; OP_CHECKDATASIGVERIFY` fails if there are fewer than 3 item on stack.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY`fails if `&amp;lt;pubKey&amp;gt;` is not a validly encoded public key.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if `&amp;lt;sig&amp;gt;` is not a validly encoded signature with strict DER encoding.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if signature `&amp;lt;sig&amp;gt;` is not empty and does not pass the Low S check.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if `&amp;lt;sig&amp;gt;` is not a valid signature of `&amp;lt;msg&amp;gt;` with respect to `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt;&amp;gt;&amp;gt;  - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` pops the top three stack elements if `&amp;lt;sig&amp;gt;` is a valid signature of `&amp;lt;msg&amp;gt;` with respect to `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sample Implementation [4, 5]&lt;br/&gt;&amp;gt;&amp;gt; ----------------------------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ```c&#43;&#43;&lt;br/&gt;&amp;gt;&amp;gt;                     case OP_CHECKDATASIG:&lt;br/&gt;&amp;gt;&amp;gt;                     case OP_CHECKDATASIGVERIFY: {&lt;br/&gt;&amp;gt;&amp;gt;                         // Make sure this remains an error before activation.&lt;br/&gt;&amp;gt;&amp;gt;                         if ((flags &amp;amp; SCRIPT_ENABLE_CHECKDATASIG) == 0) {&lt;br/&gt;&amp;gt;&amp;gt;                             return set_error(serror, SCRIPT_ERR_BAD_OPCODE);&lt;br/&gt;&amp;gt;&amp;gt;                         }&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                         // (sig message pubkey -- bool)&lt;br/&gt;&amp;gt;&amp;gt;                         if (stack.size() &amp;lt; 3) {&lt;br/&gt;&amp;gt;&amp;gt;                             return set_error(&lt;br/&gt;&amp;gt;&amp;gt;                                 serror, SCRIPT_ERR_INVALID_STACK_OPERATION);&lt;br/&gt;&amp;gt;&amp;gt;                         }&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                         valtype &amp;amp;vchSig = stacktop(-3);&lt;br/&gt;&amp;gt;&amp;gt;                         valtype &amp;amp;vchMessage = stacktop(-2);&lt;br/&gt;&amp;gt;&amp;gt;                         valtype &amp;amp;vchPubKey = stacktop(-1);&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                         if (!CheckDataSignatureEncoding(vchSig, flags,&lt;br/&gt;&amp;gt;&amp;gt;                                                         serror) ||&lt;br/&gt;&amp;gt;&amp;gt;                             !CheckPubKeyEncoding(vchPubKey, flags, serror)) {&lt;br/&gt;&amp;gt;&amp;gt;                             // serror is set&lt;br/&gt;&amp;gt;&amp;gt;                             return false;&lt;br/&gt;&amp;gt;&amp;gt;                         }&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                         bool fSuccess = false;&lt;br/&gt;&amp;gt;&amp;gt;                         if (vchSig.size()) {&lt;br/&gt;&amp;gt;&amp;gt;                             valtype vchHash(32);&lt;br/&gt;&amp;gt;&amp;gt;                             CSHA256()&lt;br/&gt;&amp;gt;&amp;gt;                                 .Write(vchMessage.data(), vchMessage.size())&lt;br/&gt;&amp;gt;&amp;gt;                                 .Finalize(vchHash.data());&lt;br/&gt;&amp;gt;&amp;gt;                             uint256 message(vchHash);&lt;br/&gt;&amp;gt;&amp;gt;                             CPubKey pubkey(vchPubKey);&lt;br/&gt;&amp;gt;&amp;gt;                             fSuccess = pubkey.Verify(message, vchSig);&lt;br/&gt;&amp;gt;&amp;gt;                         }&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                         if (!fSuccess &amp;amp;&amp;amp; (flags &amp;amp; SCRIPT_VERIFY_NULLFAIL) &amp;amp;&amp;amp;&lt;br/&gt;&amp;gt;&amp;gt;                             vchSig.size()) {&lt;br/&gt;&amp;gt;&amp;gt;                             return set_error(serror, SCRIPT_ERR_SIG_NULLFAIL);&lt;br/&gt;&amp;gt;&amp;gt;                         }&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;                         popstack(stack);&lt;br/&gt;&amp;gt;&amp;gt;                         popstack(stack);&lt;br/&gt;&amp;gt;&amp;gt;                         popstack(stack);&lt;br/&gt;&amp;gt;&amp;gt;                         stack.push_back(fSuccess ? vchTrue : vchFalse);&lt;br/&gt;&amp;gt;&amp;gt;                         if (opcode == OP_CHECKDATASIGVERIFY) {&lt;br/&gt;&amp;gt;&amp;gt;                             if (fSuccess) {&lt;br/&gt;&amp;gt;&amp;gt;                                 popstack(stack);&lt;br/&gt;&amp;gt;&amp;gt;                             } else {&lt;br/&gt;&amp;gt;&amp;gt;                                 return set_error(serror,&lt;br/&gt;&amp;gt;&amp;gt;                                                  SCRIPT_ERR_CHECKDATASIGVERIFY);&lt;br/&gt;&amp;gt;&amp;gt;                             }&lt;br/&gt;&amp;gt;&amp;gt;                         }&lt;br/&gt;&amp;gt;&amp;gt;                     } break;&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Sample Usage&lt;br/&gt;&amp;gt;&amp;gt; ------------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; The following example shows a spend and redeem script for a basic use of CHECKDATASIG.  This example validates the signature of some data, provides a placeholder where you would then process that data, and finally allows one of 2 signatures to spend based on the outcome of the data processing.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; ### spend script:&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt; push txsignature&lt;br/&gt;&amp;gt;&amp;gt; push txpubkey&lt;br/&gt;&amp;gt;&amp;gt; push msg&lt;br/&gt;&amp;gt;&amp;gt; push sig&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt; ### redeem script:&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt;                                 (txsig, txpubkey msg, sig)&lt;br/&gt;&amp;gt;&amp;gt; OP_OVER                         (txsig, txpubkey, msg, sig, msg)&lt;br/&gt;&amp;gt;&amp;gt; push data pubkey                (txsig, txpubkey, msg, sig, msg, pubkey)&lt;br/&gt;&amp;gt;&amp;gt; OP_CHECKDATASIGVERIFY           (txsig, txpubkey, msg)&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt; Now that msg is on the stack top, the script can write predicates on it,&lt;br/&gt;&amp;gt;&amp;gt; resulting in the message being consumed and a true/false condition left on the stack: (txpubkey, txsig, boolean)&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt; OP_IF                           (txsig, txpubkey)&lt;br/&gt;&amp;gt;&amp;gt;   OP_DUP                        (txsig, txpubkey, txpubkey)&lt;br/&gt;&amp;gt;&amp;gt;   OP_HASH160                    (txsig, txpubkey, address)&lt;br/&gt;&amp;gt;&amp;gt;   push &amp;lt;p2pkh spend address&amp;gt;    (txsig, txpubkey, address, p2pkh spend address)&lt;br/&gt;&amp;gt;&amp;gt;   OP_EQUALVERIFY                (txsig, txpubkey)&lt;br/&gt;&amp;gt;&amp;gt;   OP_CHECKSIG&lt;br/&gt;&amp;gt;&amp;gt; OP_ELSE&lt;br/&gt;&amp;gt;&amp;gt;   (same as if clause but a different &amp;lt;p2pkh spend address&amp;gt;)&lt;br/&gt;&amp;gt;&amp;gt; OP_ENDIF&lt;br/&gt;&amp;gt;&amp;gt; ```&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; History&lt;br/&gt;&amp;gt;&amp;gt; -------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; This specification is based on Andrew Stone’s OP_DATASIGVERIFY proposal [6, 7]. It is modified from Stone&amp;#39;s original proposal based on a synthesis of all the peer-review and feedback received [8].&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; References&lt;br/&gt;&amp;gt;&amp;gt; ----------&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [1] [OP_CHECKSIG](&lt;a href=&#34;https://en.bitcoin.it/wiki/OP_CHECKSIG&#34;&gt;https://en.bitcoin.it/wiki/OP_CHECKSIG&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [2] [Strict DER Encoding](&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [3] [Low-S and Nullfail Specification](&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0146.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0146.mediawiki&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [4] [Bitcoin ABC implementation](&lt;a href=&#34;https://reviews.bitcoinabc.org/D1621&#34;&gt;https://reviews.bitcoinabc.org/D1621&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [5] [Bitcoin ABC implementation update](&lt;a href=&#34;https://reviews.bitcoinabc.org/D1646&#34;&gt;https://reviews.bitcoinabc.org/D1646&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [6] [Andrew Stone’s OP_DATASIGVERIFY](&lt;a href=&#34;https://github.com/BitcoinUnlimited/BitcoinUnlimited/blob/bucash1.3.0.0/doc/opdatasigverify.md&#34;&gt;https://github.com/BitcoinUnlimited/BitcoinUnlimited/blob/bucash1.3.0.0/doc/opdatasigverify.md&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [7] [Andrew Stone&amp;#39;s article on Scripting](&lt;a href=&#34;https://medium.com/@g.andrew.stone/bitcoin-scripting-applications-decision-based-spending-8e7b93d7bdb9&#34;&gt;https://medium.com/@g.andrew.stone/bitcoin-scripting-applications-decision-based-spending-8e7b93d7bdb9&lt;/a&gt;)&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; [8] [Peer Review of Andrew Stone&amp;#39;s Proposal](&lt;a href=&#34;https://github.com/bitcoincashorg/bitcoincash.org/pull/10&#34;&gt;https://github.com/bitcoincashorg/bitcoincash.org/pull/10&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; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&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;-------------- 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/20210703/ba67ab0b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210703/ba67ab0b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:56:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgycdfdzvcywwvgpgeanzkgzc505vpp7lw5fzlvnsglqfqz5nnulgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgdsrczj</id>
    
      <title type="html">📅 Original date posted:2021-07-03 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgycdfdzvcywwvgpgeanzkgzc505vpp7lw5fzlvnsglqfqz5nnulgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgdsrczj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswxp0pxganpwr35vx5q507r0w4zppgq8pc86etq2nayjuq79w55fqq58y2r&#39;&gt;nevent1q…8y2r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-03&lt;br/&gt;📝 Original message:Reproduced below is the BIP text from Bitcoin Cash&amp;#39;s (MIT-Licensed)&lt;br/&gt;specification for &amp;#34;CheckDataSig&amp;#34;, more or less the same thing as&lt;br/&gt;CHECKSIGFROMSTACK&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/op_checkdatasig.md&#34;&gt;https://github.com/bitcoincashorg/bitcoincash.org/blob/master/spec/op_checkdatasig.md&lt;/a&gt;.&lt;br/&gt;In contrast to Element&amp;#39;s implementation, it does not have Element&amp;#39;s bugs&lt;br/&gt;around verify semantics and uses the nullfail rule, and there is a&lt;br/&gt;specification document so it seemed like the easiest starting point for&lt;br/&gt;discussion v.s. drafting something from scratch.&lt;br/&gt;&lt;br/&gt;Does anyone have any issue with adapting this exact text and implementation&lt;br/&gt;to a BIP for Bitcoin using 2 OP_SUCCESSX opcodes?&lt;br/&gt;&lt;br/&gt;Note that with *just* CheckSigFromStack, while you can do some very&lt;br/&gt;valuable use cases, but without OP_CAT it does not enable sophisticated&lt;br/&gt;covenants (and as per&lt;br/&gt;&lt;a href=&#34;https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html&#34;&gt;https://www.wpsoftware.net/andrew/blog/cat-and-schnorr-tricks-i.html&lt;/a&gt; just&lt;br/&gt;CAT alone enables such uses).&lt;br/&gt;&lt;br/&gt;Design questions worth considering as modifications:&lt;br/&gt;&lt;br/&gt;1. Should CSFS require some sort of tagged hash? Very likely answer is no –&lt;br/&gt;tags interfere with certain use cases&lt;br/&gt;2. Should CSFS split the signature’s R &amp;amp; S value stack items for some&lt;br/&gt;applications that otherwise may require OP_CAT? E.g. using a pinned R value&lt;br/&gt;allows you to extract a private key if ever double signed, using 2 R values&lt;br/&gt;allows pay-to-reveal-key contracts. Most likely answer is no, if that is&lt;br/&gt;desired then OP_CAT can be introduced&lt;br/&gt;3. Should CSFS support a cheap way to reference the taproot internal or&lt;br/&gt;external key? Perhaps, can be handled with undefined upgradeable keytypes.&lt;br/&gt;One might want to use the internal key, if the signed data should be valid&lt;br/&gt;independent of the tapscript tree. One might want to use the external key,&lt;br/&gt;if the data should only be valid for a single tapscript key &#43; tree.&lt;br/&gt;4. Should invalid public keys types be a NOP to support future extended&lt;br/&gt;pubkey types?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;layout: specification&lt;br/&gt;title: OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY Specification&lt;br/&gt;category: spec&lt;br/&gt;date: 2018-08-20&lt;br/&gt;activation: 1542300000&lt;br/&gt;version: 0.6&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG&lt;br/&gt;===============&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY check whether a signature is&lt;br/&gt;valid with respect to a message and a public key.&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG permits data to be imported into a script, and have&lt;br/&gt;its validity checked against some signing authority such as an&lt;br/&gt;&amp;#34;Oracle&amp;#34;.&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG and OP_CHECKDATASIGVERIFY are designed to be&lt;br/&gt;implemented similarly to OP_CHECKSIG [1]. Conceptually, one could&lt;br/&gt;imagine OP_CHECKSIG functionality being replaced by OP_CHECKDATASIG,&lt;br/&gt;along with a separate Op Code to create a hash from the transaction&lt;br/&gt;based on the SigHash algorithm.&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG Specification&lt;br/&gt;-----------------------------&lt;br/&gt;&lt;br/&gt;### Semantics&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG fails immediately if the stack is not well formed. To&lt;br/&gt;be well formed, the stack must contain at least three elements&lt;br/&gt;[`&amp;lt;sig&amp;gt;`, `&amp;lt;msg&amp;gt;`, `&amp;lt;pubKey&amp;gt;`] in this order where `&amp;lt;pubKey&amp;gt;` is the&lt;br/&gt;top element and&lt;br/&gt;  * `&amp;lt;pubKey&amp;gt;` must be a validly encoded public key&lt;br/&gt;  * `&amp;lt;msg&amp;gt;` can be any string&lt;br/&gt;  * `&amp;lt;sig&amp;gt;` must follow the strict DER encoding as described in [2]&lt;br/&gt;and the S-value of `&amp;lt;sig&amp;gt;` must be at most the curve order divided by&lt;br/&gt;2 as described in [3]&lt;br/&gt;&lt;br/&gt;If the stack is well formed, then OP_CHECKDATASIG pops the top three&lt;br/&gt;elements [`&amp;lt;sig&amp;gt;`, `&amp;lt;msg&amp;gt;`, `&amp;lt;pubKey&amp;gt;`] from the stack and pushes true&lt;br/&gt;onto the stack if `&amp;lt;sig&amp;gt;` is valid with respect to the raw&lt;br/&gt;single-SHA256 hash of `&amp;lt;msg&amp;gt;` and `&amp;lt;pubKey&amp;gt;` using the secp256k1&lt;br/&gt;elliptic curve. Otherwise, it pops three elements and pushes false&lt;br/&gt;onto the stack in the case that `&amp;lt;sig&amp;gt;` is the empty string and fails&lt;br/&gt;in all other cases.&lt;br/&gt;&lt;br/&gt;Nullfail is enforced the same as for OP_CHECKSIG [3]. If the signature&lt;br/&gt;does not match the supplied public key and message hash, and the&lt;br/&gt;signature is not an empty byte array, the entire script fails.&lt;br/&gt;&lt;br/&gt;### Opcode Number&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIG uses the previously unused opcode number 186 (0xba in&lt;br/&gt;hex encoding)&lt;br/&gt;&lt;br/&gt;### SigOps&lt;br/&gt;&lt;br/&gt;Signature operations accounting for OP_CHECKDATASIG shall be&lt;br/&gt;calculated the same as OP_CHECKSIG. This means that each&lt;br/&gt;OP_CHECKDATASIG shall be counted as one (1) SigOp.&lt;br/&gt;&lt;br/&gt;### Activation&lt;br/&gt;&lt;br/&gt;Use of OP_CHECKDATASIG, unless occuring in an unexecuted OP_IF branch,&lt;br/&gt;will make the transaction invalid if it is included in a block where&lt;br/&gt;the median timestamp of the prior 11 blocks is less than 1542300000.&lt;br/&gt;&lt;br/&gt;### Unit Tests&lt;br/&gt;&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if 15 November 2018&lt;br/&gt;protocol upgrade is not yet activated.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; OP_CHECKDATASIG` fails if there are fewer than 3 items on stack.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if `&amp;lt;pubKey&amp;gt;` is not a&lt;br/&gt;validly encoded public key.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if `&amp;lt;sig&amp;gt;` is not a&lt;br/&gt;validly encoded signature with strict DER encoding.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if signature `&amp;lt;sig&amp;gt;`&lt;br/&gt;is not empty and does not pass the Low S check.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` fails if signature `&amp;lt;sig&amp;gt;`&lt;br/&gt;is not empty and does not pass signature validation of `&amp;lt;msg&amp;gt;` and&lt;br/&gt;`&amp;lt;pubKey&amp;gt;`.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` pops three elements and&lt;br/&gt;pushes false onto the stack if `&amp;lt;sig&amp;gt;` is an empty byte array.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIG` pops three elements and&lt;br/&gt;pushes true onto the stack if `&amp;lt;sig&amp;gt;` is a valid signature of `&amp;lt;msg&amp;gt;`&lt;br/&gt;with respect to `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIGVERIFY Specification&lt;br/&gt;-----------------------------------&lt;br/&gt;&lt;br/&gt;### Semantics&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIGVERIFY is equivalent to OP_CHECKDATASIG followed by&lt;br/&gt;OP_VERIFY. It leaves nothing on the stack, and will cause the script&lt;br/&gt;to fail immediately if the signature check does not pass.&lt;br/&gt;&lt;br/&gt;### Opcode Number&lt;br/&gt;&lt;br/&gt;OP_CHECKDATASIGVERIFY uses the previously unused opcode number 187&lt;br/&gt;(0xbb in hex encoding)&lt;br/&gt;&lt;br/&gt;### SigOps&lt;br/&gt;&lt;br/&gt;Signature operations accounting for OP_CHECKDATASIGVERIFY shall be&lt;br/&gt;calculated the same as OP_CHECKSIGVERIFY. This means that each&lt;br/&gt;OP_CHECKDATASIGVERIFY shall be counted as one (1) SigOp.&lt;br/&gt;&lt;br/&gt;### Activation&lt;br/&gt;&lt;br/&gt;Use of OP_CHECKDATASIGVERIFY, unless occuring in an unexecuted OP_IF&lt;br/&gt;branch, will make the transaction invalid if it is included in a block&lt;br/&gt;where the median timestamp of the prior 11 blocks is less than&lt;br/&gt;1542300000.&lt;br/&gt;&lt;br/&gt;### Unit Tests&lt;br/&gt;&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if 15 November&lt;br/&gt;2018 protocol upgrade is not yet activated.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; OP_CHECKDATASIGVERIFY` fails if there are fewer than 3&lt;br/&gt;item on stack.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY`fails if `&amp;lt;pubKey&amp;gt;` is&lt;br/&gt;not a validly encoded public key.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if `&amp;lt;sig&amp;gt;` is&lt;br/&gt;not a validly encoded signature with strict DER encoding.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if signature&lt;br/&gt;`&amp;lt;sig&amp;gt;` is not empty and does not pass the Low S check.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` fails if `&amp;lt;sig&amp;gt;` is&lt;br/&gt;not a valid signature of `&amp;lt;msg&amp;gt;` with respect to `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt; - `&amp;lt;sig&amp;gt; &amp;lt;msg&amp;gt; &amp;lt;pubKey&amp;gt; OP_CHECKDATASIGVERIFY` pops the top three&lt;br/&gt;stack elements if `&amp;lt;sig&amp;gt;` is a valid signature of `&amp;lt;msg&amp;gt;` with respect&lt;br/&gt;to `&amp;lt;pubKey&amp;gt;`.&lt;br/&gt;&lt;br/&gt;Sample Implementation [4, 5]&lt;br/&gt;----------------------------&lt;br/&gt;&lt;br/&gt;```c&#43;&#43;&lt;br/&gt;                    case OP_CHECKDATASIG:&lt;br/&gt;                    case OP_CHECKDATASIGVERIFY: {&lt;br/&gt;                        // Make sure this remains an error before activation.&lt;br/&gt;                        if ((flags &amp;amp; SCRIPT_ENABLE_CHECKDATASIG) == 0) {&lt;br/&gt;                            return set_error(serror, SCRIPT_ERR_BAD_OPCODE);&lt;br/&gt;                        }&lt;br/&gt;&lt;br/&gt;                        // (sig message pubkey -- bool)&lt;br/&gt;                        if (stack.size() &amp;lt; 3) {&lt;br/&gt;                            return set_error(&lt;br/&gt;                                serror, SCRIPT_ERR_INVALID_STACK_OPERATION);&lt;br/&gt;                        }&lt;br/&gt;&lt;br/&gt;                        valtype &amp;amp;vchSig = stacktop(-3);&lt;br/&gt;                        valtype &amp;amp;vchMessage = stacktop(-2);&lt;br/&gt;                        valtype &amp;amp;vchPubKey = stacktop(-1);&lt;br/&gt;&lt;br/&gt;                        if (!CheckDataSignatureEncoding(vchSig, flags,&lt;br/&gt;                                                        serror) ||&lt;br/&gt;                            !CheckPubKeyEncoding(vchPubKey, flags, serror)) {&lt;br/&gt;                            // serror is set&lt;br/&gt;                            return false;&lt;br/&gt;                        }&lt;br/&gt;&lt;br/&gt;                        bool fSuccess = false;&lt;br/&gt;                        if (vchSig.size()) {&lt;br/&gt;                            valtype vchHash(32);&lt;br/&gt;                            CSHA256()&lt;br/&gt;                                .Write(vchMessage.data(), vchMessage.size())&lt;br/&gt;                                .Finalize(vchHash.data());&lt;br/&gt;                            uint256 message(vchHash);&lt;br/&gt;                            CPubKey pubkey(vchPubKey);&lt;br/&gt;                            fSuccess = pubkey.Verify(message, vchSig);&lt;br/&gt;                        }&lt;br/&gt;&lt;br/&gt;                        if (!fSuccess &amp;amp;&amp;amp; (flags &amp;amp; SCRIPT_VERIFY_NULLFAIL) &amp;amp;&amp;amp;&lt;br/&gt;                            vchSig.size()) {&lt;br/&gt;                            return set_error(serror, SCRIPT_ERR_SIG_NULLFAIL);&lt;br/&gt;                        }&lt;br/&gt;&lt;br/&gt;                        popstack(stack);&lt;br/&gt;                        popstack(stack);&lt;br/&gt;                        popstack(stack);&lt;br/&gt;                        stack.push_back(fSuccess ? vchTrue : vchFalse);&lt;br/&gt;                        if (opcode == OP_CHECKDATASIGVERIFY) {&lt;br/&gt;                            if (fSuccess) {&lt;br/&gt;                                popstack(stack);&lt;br/&gt;                            } else {&lt;br/&gt;                                return set_error(serror,&lt;br/&gt;                                                 SCRIPT_ERR_CHECKDATASIGVERIFY);&lt;br/&gt;                            }&lt;br/&gt;                        }&lt;br/&gt;                    } break;&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;Sample Usage&lt;br/&gt;------------&lt;br/&gt;&lt;br/&gt;The following example shows a spend and redeem script for a basic use&lt;br/&gt;of CHECKDATASIG.  This example validates the signature of some data,&lt;br/&gt;provides a placeholder where you would then process that data, and&lt;br/&gt;finally allows one of 2 signatures to spend based on the outcome of&lt;br/&gt;the data processing.&lt;br/&gt;&lt;br/&gt;### spend script:&lt;br/&gt;```&lt;br/&gt;push txsignature&lt;br/&gt;push txpubkey&lt;br/&gt;push msg&lt;br/&gt;push sig&lt;br/&gt;```&lt;br/&gt;### redeem script:&lt;br/&gt;```&lt;br/&gt;                                (txsig, txpubkey msg, sig)&lt;br/&gt;OP_OVER                         (txsig, txpubkey, msg, sig, msg)&lt;br/&gt;push data pubkey                (txsig, txpubkey, msg, sig, msg, pubkey)&lt;br/&gt;OP_CHECKDATASIGVERIFY           (txsig, txpubkey, msg)&lt;br/&gt;```&lt;br/&gt;Now that msg is on the stack top, the script can write predicates on it,&lt;br/&gt;resulting in the message being consumed and a true/false condition&lt;br/&gt;left on the stack: (txpubkey, txsig, boolean)&lt;br/&gt;```&lt;br/&gt;OP_IF                           (txsig, txpubkey)&lt;br/&gt;  OP_DUP                        (txsig, txpubkey, txpubkey)&lt;br/&gt;  OP_HASH160                    (txsig, txpubkey, address)&lt;br/&gt;  push &amp;lt;p2pkh spend address&amp;gt;    (txsig, txpubkey, address, p2pkh spend address)&lt;br/&gt;  OP_EQUALVERIFY                (txsig, txpubkey)&lt;br/&gt;  OP_CHECKSIG&lt;br/&gt;OP_ELSE&lt;br/&gt;  (same as if clause but a different &amp;lt;p2pkh spend address&amp;gt;)&lt;br/&gt;OP_ENDIF&lt;br/&gt;```&lt;br/&gt;&lt;br/&gt;History&lt;br/&gt;-------&lt;br/&gt;&lt;br/&gt;This specification is based on Andrew Stone’s OP_DATASIGVERIFY&lt;br/&gt;proposal [6, 7]. It is modified from Stone&amp;#39;s original proposal based&lt;br/&gt;on a synthesis of all the peer-review and feedback received [8].&lt;br/&gt;&lt;br/&gt;References&lt;br/&gt;----------&lt;br/&gt;&lt;br/&gt;[1] [OP_CHECKSIG](&lt;a href=&#34;https://en.bitcoin.it/wiki/OP_CHECKSIG&#34;&gt;https://en.bitcoin.it/wiki/OP_CHECKSIG&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[2] [Strict DER&lt;br/&gt;Encoding](&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[3] [Low-S and Nullfail&lt;br/&gt;Specification](&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0146.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0146.mediawiki&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[4] [Bitcoin ABC implementation](&lt;a href=&#34;https://reviews.bitcoinabc.org/D1621&#34;&gt;https://reviews.bitcoinabc.org/D1621&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[5] [Bitcoin ABC implementation update](&lt;a href=&#34;https://reviews.bitcoinabc.org/D1646&#34;&gt;https://reviews.bitcoinabc.org/D1646&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[6] [Andrew Stone’s&lt;br/&gt;OP_DATASIGVERIFY](&lt;a href=&#34;https://github.com/BitcoinUnlimited/BitcoinUnlimited/blob/bucash1.3.0.0/doc/opdatasigverify.md&#34;&gt;https://github.com/BitcoinUnlimited/BitcoinUnlimited/blob/bucash1.3.0.0/doc/opdatasigverify.md&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[7] [Andrew Stone&amp;#39;s article on&lt;br/&gt;Scripting](&lt;a href=&#34;https://medium.com/@g.andrew.stone/bitcoin-scripting-applications-decision-based-spending-8e7b93d7bdb9&#34;&gt;https://medium.com/@g.andrew.stone/bitcoin-scripting-applications-decision-based-spending-8e7b93d7bdb9&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;[8] [Peer Review of Andrew Stone&amp;#39;s&lt;br/&gt;Proposal](&lt;a href=&#34;https://github.com/bitcoincashorg/bitcoincash.org/pull/10&#34;&gt;https://github.com/bitcoincashorg/bitcoincash.org/pull/10&lt;/a&gt;)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20210703/f38c654f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210703/f38c654f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:56:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx2xrxp9lfyxetvv0yxa93rwzn8c5gqvhgwp6y0uuv3u87mgcu73qzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgjzluqz</id>
    
      <title type="html">📅 Original date posted:2021-07-03 📝 Original message:Yep -- ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx2xrxp9lfyxetvv0yxa93rwzn8c5gqvhgwp6y0uuv3u87mgcu73qzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgjzluqz" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsp2tmsy22gy3slqfkgu8puhwfv2t90yfylmxmh7cnrvvmd9c4rs5cxmha6f&#39;&gt;nevent1q…ha6f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-07-03&lt;br/&gt;📝 Original message:Yep -- sorry for the confusing notation but seems like you got it. C&#43;&#43;&lt;br/&gt;templates have this issue too btw :)&lt;br/&gt;&lt;br/&gt;One cool thing is that if you have op_add for arbitrary width integers or&lt;br/&gt;op_cat you can also make a quantum proof signature by signing the signature&lt;br/&gt;made with checksig with the lamport.&lt;br/&gt;&lt;br/&gt;There are a couple gotchas wrt crypto assumptions on that but I&amp;#39;ll write it&lt;br/&gt;up soon 🙂 it also works better in segwit V0 because there&amp;#39;s no keypath&lt;br/&gt;spend -- that breaks the quantum proofness of this scheme.&lt;br/&gt;&lt;br/&gt;On Fri, Jul 2, 2021, 4:58 PM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good morning Jeremy,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Dear Bitcoin Devs,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It recently occurred to me that it&amp;#39;s possible to do a lamport signature&lt;br/&gt;&amp;gt; in script for arithmetic values by using a binary expanded representation.&lt;br/&gt;&amp;gt; There are some applications that might benefit from this and I don&amp;#39;t recall&lt;br/&gt;&amp;gt; seeing it discussed elsewhere, but would be happy for a citation/reference&lt;br/&gt;&amp;gt; to the technique.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; blog post here, &lt;a href=&#34;https://rubin.io/blog/2021/07/02/signing-5-bytes/&#34;&gt;https://rubin.io/blog/2021/07/02/signing-5-bytes/&lt;/a&gt;, text&lt;br/&gt;&amp;gt; reproduced below&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; There are two insights in this post:&lt;br/&gt;&amp;gt; &amp;gt; 1. to use a bitwise expansion of the number&lt;br/&gt;&amp;gt; &amp;gt; 2. to use a lamport signature&lt;br/&gt;&amp;gt; &amp;gt; Let&amp;#39;s look at the code in python and then translate to bitcoin script:&lt;br/&gt;&amp;gt; &amp;gt; ```python&lt;br/&gt;&amp;gt; &amp;gt; def add_bit(idx, preimage, image_0, image_1):&lt;br/&gt;&amp;gt; &amp;gt;     s = sha256(preimage)&lt;br/&gt;&amp;gt; &amp;gt;     if s == image_1:&lt;br/&gt;&amp;gt; &amp;gt;         return (1 &amp;lt;&amp;lt; idx)&lt;br/&gt;&amp;gt; &amp;gt;     if s == image_0:&lt;br/&gt;&amp;gt; &amp;gt;         return 0&lt;br/&gt;&amp;gt; &amp;gt;     else:&lt;br/&gt;&amp;gt; &amp;gt;         assert False&lt;br/&gt;&amp;gt; &amp;gt; def get_signed_number(witnesses : List[Hash], keys : List[Tuple[Hash,&lt;br/&gt;&amp;gt; Hash]]):&lt;br/&gt;&amp;gt; &amp;gt;     acc = 0&lt;br/&gt;&amp;gt; &amp;gt;     for (idx, preimage) in enumerate(witnesses):&lt;br/&gt;&amp;gt; &amp;gt;         acc &#43;= add_bit(idx, preimage, keys[idx][0], keys[idx][1])&lt;br/&gt;&amp;gt; &amp;gt;     return x&lt;br/&gt;&amp;gt; &amp;gt; ```&lt;br/&gt;&amp;gt; &amp;gt; So what&amp;#39;s going on here? The signer generates a key which is a list of&lt;br/&gt;&amp;gt; pairs of&lt;br/&gt;&amp;gt; &amp;gt; hash images to create the script.&lt;br/&gt;&amp;gt; &amp;gt; To sign, the signer provides a witness of a list of preimages that match&lt;br/&gt;&amp;gt; one or the other.&lt;br/&gt;&amp;gt; &amp;gt; During validation, the network adds up a weighted value per preimage and&lt;br/&gt;&amp;gt; checks&lt;br/&gt;&amp;gt; &amp;gt; that there are no left out values.&lt;br/&gt;&amp;gt; &amp;gt; Let&amp;#39;s imagine a concrete use case: I want a third party to post-hoc sign&lt;br/&gt;&amp;gt; a sequence lock. This is 16 bits.&lt;br/&gt;&amp;gt; &amp;gt; I can form the following script:&lt;br/&gt;&amp;gt; &amp;gt; ```&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;pk&amp;gt; checksigverify&lt;br/&gt;&amp;gt; &amp;gt; 0&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_0_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;gt; ADD ELSE &amp;lt;H(K_0_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_1_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;1&amp;gt; ADD ELSE &amp;lt;H(K_1_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_2_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;2&amp;gt; ADD ELSE &amp;lt;H(K_2_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_3_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;3&amp;gt; ADD ELSE &amp;lt;H(K_3_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_4_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;4&amp;gt; ADD ELSE &amp;lt;H(K_4_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_5_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;5&amp;gt; ADD ELSE &amp;lt;H(K_5_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_6_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;6&amp;gt; ADD ELSE &amp;lt;H(K_6_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_7_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;7&amp;gt; ADD ELSE &amp;lt;H(K_7_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_8_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;8&amp;gt; ADD ELSE &amp;lt;H(K_8_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_9_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;9&amp;gt; ADD ELSE &amp;lt;H(K_9_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_10_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;10&amp;gt; ADD ELSE &amp;lt;H(K_10_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_11_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;11&amp;gt; ADD ELSE &amp;lt;H(K_11_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_12_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;12&amp;gt; ADD ELSE &amp;lt;H(K_12_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_13_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;13&amp;gt; ADD ELSE &amp;lt;H(K_13_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_14_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;14&amp;gt; ADD ELSE &amp;lt;H(K_14_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_15_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;lt;&amp;lt;15&amp;gt; ADD ELSE &amp;lt;H(K_15_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; CHECKSEQUENCEVERIFY&lt;br/&gt;&amp;gt; &amp;gt; ```&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This took a bit of thinking to understand, mostly because you use the `&amp;lt;&amp;lt;`&lt;br/&gt;&amp;gt; operator in a syntax that uses `&amp;lt; &amp;gt;` as delimiters, which was mildly&lt;br/&gt;&amp;gt; confusing --- at first I thought you were pushing some kind of nested&lt;br/&gt;&amp;gt; SCRIPT representation, but in any case, replacing it with the actual&lt;br/&gt;&amp;gt; numbers is a little less confusing on the syntax front, and I think (hope?)&lt;br/&gt;&amp;gt; most people who can understand `1&amp;lt;&amp;lt;1` have also memorized the first few&lt;br/&gt;&amp;gt; powers of 2....&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; ```&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;pk&amp;gt; checksigverify&lt;br/&gt;&amp;gt; &amp;gt; 0&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_0_1)&amp;gt; EQUAL IF DROP &amp;lt;1&amp;gt; ADD ELSE &amp;lt;H(K_0_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_1_1)&amp;gt; EQUAL IF DROP &amp;lt;2&amp;gt; ADD ELSE &amp;lt;H(K_1_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_2_1)&amp;gt; EQUAL IF DROP &amp;lt;4&amp;gt; ADD ELSE &amp;lt;H(K_2_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_3_1)&amp;gt; EQUAL IF DROP &amp;lt;8&amp;gt; ADD ELSE &amp;lt;H(K_3_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_4_1)&amp;gt; EQUAL IF DROP &amp;lt;16&amp;gt; ADD ELSE &amp;lt;H(K_4_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_5_1)&amp;gt; EQUAL IF DROP &amp;lt;32&amp;gt; ADD ELSE &amp;lt;H(K_5_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_6_1)&amp;gt; EQUAL IF DROP &amp;lt;64&amp;gt; ADD ELSE &amp;lt;H(K_6_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_7_1)&amp;gt; EQUAL IF DROP &amp;lt;128&amp;gt; ADD ELSE &amp;lt;H(K_7_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_8_1)&amp;gt; EQUAL IF DROP &amp;lt;256&amp;gt; ADD ELSE &amp;lt;H(K_8_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_9_1)&amp;gt; EQUAL IF DROP &amp;lt;512&amp;gt; ADD ELSE &amp;lt;H(K_9_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_10_1)&amp;gt; EQUAL IF DROP &amp;lt;1024&amp;gt; ADD ELSE &amp;lt;H(K_10_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_11_1)&amp;gt; EQUAL IF DROP &amp;lt;2048&amp;gt; ADD ELSE &amp;lt;H(K_11_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_12_1)&amp;gt; EQUAL IF DROP &amp;lt;4096&amp;gt; ADD ELSE &amp;lt;H(K_12_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_13_1)&amp;gt; EQUAL IF DROP &amp;lt;8192&amp;gt; ADD ELSE &amp;lt;H(K_13_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_14_1)&amp;gt; EQUAL IF DROP &amp;lt;16384&amp;gt; ADD ELSE &amp;lt;H(K_14_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; SWAP sha256 DUP &amp;lt;H(K_15_1)&amp;gt; EQUAL IF DROP &amp;lt;32768&amp;gt; ADD ELSE &amp;lt;H(K_15_0)&amp;gt;&lt;br/&gt;&amp;gt; EQUALVERIFY ENDIF&lt;br/&gt;&amp;gt; &amp;gt; CHECKSEQUENCEVERIFY&lt;br/&gt;&amp;gt; &amp;gt; ```&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the other hand LOL WTF, this is cool.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Basically you are showing that if we enable something as innocuous as&lt;br/&gt;&amp;gt; `OP_ADD`, we can implement Lamport signatures for **arbitrary** values&lt;br/&gt;&amp;gt; representable in small binary numbers (16 bits in the above example).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I was thinking &amp;#34;why not Merkle signatures&amp;#34; since the pubkey would be much&lt;br/&gt;&amp;gt; smaller but the signature would be much larger, but (a) the SCRIPT would be&lt;br/&gt;&amp;gt; much more complicated and (b) in modern Bitcoin, the above SCRIPT would be&lt;br/&gt;&amp;gt; in the witness stack anyway so there is no advantage to pushing the size&lt;br/&gt;&amp;gt; towards the signature rather than the pubkey, they all have the same&lt;br/&gt;&amp;gt; weight, and since both Lamport and Merkle are single-use-only and we do not&lt;br/&gt;&amp;gt; want to encourage pubkey reuse even if they were not, the Merkle has much&lt;br/&gt;&amp;gt; larger signature size, so Merkle sigs end up more expensive.&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;-------------- 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/20210702/e507efdd/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210702/e507efdd/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:56:05&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg86p8pg7vd9w0sxugsh6xngz9v8z80csxduf8uj0fy9hwzvnxpqczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg83255n</id>
    
      <title type="html">📅 Original date posted:2021-05-10 📝 Original message:re: 2, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg86p8pg7vd9w0sxugsh6xngz9v8z80csxduf8uj0fy9hwzvnxpqczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg83255n" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg2u432sfg0g7gqqvx6mrv54u3rzd28umeng66fw43kaf0e62zfaqa7q8c3&#39;&gt;nevent1q…q8c3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-05-10&lt;br/&gt;📝 Original message:re: 2, there&amp;#39;s been some promising developments with Verifiable Delay&lt;br/&gt;Functions that make me think that the block regulation problems are&lt;br/&gt;solvable without requiring brute-force search proof of work. Are those&lt;br/&gt;inapplicable for some reason?&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/20210510/ec6b1926/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210510/ec6b1926/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:52:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszfaqxfzh7vncl997xen3ue22mmjsu36nn5cesfez8ypzftrslufgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg3g8hg6</id>
    
      <title type="html">📅 Original date posted:2021-05-07 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszfaqxfzh7vncl997xen3ue22mmjsu36nn5cesfez8ypzftrslufgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg3g8hg6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsylz90t07pwqv8sz4ufk5dvwqjtxlfwjvl4zlh0lwt2zgkt5d7muqge534g&#39;&gt;nevent1q…534g&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-05-07&lt;br/&gt;📝 Original message:Proof-of-stake tends towards oligopolistic control, which is antithetical&lt;br/&gt;to bitcoin.&lt;br/&gt;&lt;br/&gt;Proof-of-stake also has some other security issues that make it a bad&lt;br/&gt;substitute for Proof-of-work with respect to equivocation (reorgs).&lt;br/&gt;&lt;br/&gt;Overall you&amp;#39;ll find me *personally* in the camp that it&amp;#39;s OK to explore&lt;br/&gt;non-PoW means of consensus long term that can keep the network in consensus&lt;br/&gt;in a more capital efficient manner, but that proof-of-stake is not such a&lt;br/&gt;substitute. Other Bitcoiners will disagree with this invariably, but if you&lt;br/&gt;truly have a novel solution for Byzantine Generals, it would be a major&lt;br/&gt;contribution to not just Bitcoin but the field of computer science as a&lt;br/&gt;whole and would likely get due consideration.&lt;br/&gt;&lt;br/&gt;What&amp;#39;s difficult is that Bitcoin PoW has some very specific properties that&lt;br/&gt;may or may not be desirable around e.g. fairness that might be difficult to&lt;br/&gt;ensure in other systems, so there is probably more to the puzzle than just&lt;br/&gt;consensus.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, May 7, 2021 at 3:50 PM SatoshiSingh 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 list,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I am a lurker here and like many of you I worry about the energy usage of&lt;br/&gt;&amp;gt; bitcoin mining. I understand a lot mining happens with renewable resources&lt;br/&gt;&amp;gt; but the impact is still high.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I want to get your opinion on implementing proof of stake for bitcoin&lt;br/&gt;&amp;gt; mining in future. For now, proof of stake is still untested and not battle&lt;br/&gt;&amp;gt; tested like proof of work. Though someday it will be.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the following years we&amp;#39;ll be seeing proof of stake being implemented.&lt;br/&gt;&amp;gt; Smaller networks can test PoS which is a luxury bitcoin can&amp;#39;t afford.&lt;br/&gt;&amp;gt; Here&amp;#39;s how I see this the possibilities:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1 - Proof of stake isn&amp;#39;t a good enough security mechanism&lt;br/&gt;&amp;gt; 2 - Proof of state is a good security mechanism and works as intended&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; IF PoS turns out to be good after battle testing, would you consider&lt;br/&gt;&amp;gt; implementing it for Bitcoin? I understand this would invoke a lot of&lt;br/&gt;&amp;gt; controversies and a hard fork that no one likes. But its important enough&lt;br/&gt;&amp;gt; to consider a hard fork. What are your opinions provided PoS does work?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Love from India.&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/20210507/bdc3653f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210507/bdc3653f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:52:38&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfftzn4nj584qmemd5d8p87900ga7jn5tjedddqs40s3hkgjpgfdszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgtucxz5</id>
    
      <title type="html">📅 Original date posted:2021-04-23 📝 Original message:ACK ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfftzn4nj584qmemd5d8p87900ga7jn5tjedddqs40s3hkgjpgfdszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgtucxz5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspp9qfwkyqcgds0ru0q73lq9vku668gvfwzwg8ctzamhgd8v9s6tgs05ls9&#39;&gt;nevent1q…5ls9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-23&lt;br/&gt;📝 Original message:ACK adding Kalle.&lt;br/&gt;&lt;br/&gt;Kalle is a qualified reviewer / editor and well suited for this role.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Thu, Apr 22, 2021 at 7:09 PM 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; Unless there are objections, I intend to add Kalle Alm as a BIP editor to&lt;br/&gt;&amp;gt; assist in merging PRs into the bips git repo.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since there is no explicit process to adding BIP editors, IMO it should be&lt;br/&gt;&amp;gt; fine to use BIP 2&amp;#39;s Process BIP progression:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; A process BIP may change status from Draft to Active when it achieves&lt;br/&gt;&amp;gt; &amp;gt; rough consensus on the mailing list. Such a proposal is said to have&lt;br/&gt;&amp;gt; &amp;gt; rough consensus if it has been open to discussion on the development&lt;br/&gt;&amp;gt; &amp;gt; mailing list for at least one month, and no person maintains any&lt;br/&gt;&amp;gt; &amp;gt; unaddressed substantiated objections to it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A Process BIP could be opened for each new editor, but IMO that is&lt;br/&gt;&amp;gt; unnecessary. If anyone feels there is a need for a new Process BIP, we can&lt;br/&gt;&amp;gt; go&lt;br/&gt;&amp;gt; that route, but there is prior precedent for BIP editors appointing new&lt;br/&gt;&amp;gt; BIP&lt;br/&gt;&amp;gt; editors, so I think this should be fine.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please speak up soon if you disagree.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Luke&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/20210422/322af051/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210422/322af051/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:52:03&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsp3rfrgqtrecds9zre63teq6kptnz9vrqmde8puvtzn3eglcl5uzgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg642vjm</id>
    
      <title type="html">📅 Original date posted:2021-04-22 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsp3rfrgqtrecds9zre63teq6kptnz9vrqmde8puvtzn3eglcl5uzgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg642vjm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstp6achehqr3y6zfqy4803s3hadcgwf4msx87wnp9p4tnc0u6ne7qas7eaj&#39;&gt;nevent1q…7eaj&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-22&lt;br/&gt;📝 Original message:This letter is particularly aimed at addressing Rusty Russell&amp;#39;s quest for a&lt;br/&gt;development process that respects all groups in a balance of powers.&lt;br/&gt;However, in the spirit of open discussion, I&amp;#39;m sending it directly to the&lt;br/&gt;list.&lt;br/&gt;&lt;br/&gt;This proposal is aimed to be compatible with Taproot&amp;#39;s ST, and I hope will&lt;br/&gt;help us form some rough consensus around what we try next. Some of the&lt;br/&gt;concepts here are synthesized from what I&amp;#39;ve seen discussed, but I haven&amp;#39;t&lt;br/&gt;included citations of anyone&amp;#39;s specific ideas as I&amp;#39;m not sure of the exact&lt;br/&gt;provenance -- I won&amp;#39;t claim to have invented this per se, I&amp;#39;m trying to&lt;br/&gt;capture the zeitgeist of what anyone might think to be the process if&lt;br/&gt;pressed to draw it out. Lemme know how I did.&lt;br/&gt;&lt;br/&gt;The specific parameters are up for debate, but I&amp;#39;m trying to make sure I&amp;#39;ve&lt;br/&gt;captured the relevant state transitions.&lt;br/&gt;&lt;br/&gt;In this diagram time flows left-to-right, and transitions happen at the&lt;br/&gt;beginning, end, or middle of a block of time. It should be relatively clear&lt;br/&gt;when things happen, but if not, please ask to clarify.&lt;br/&gt;&lt;br/&gt;[image: Activation.png]&lt;br/&gt;&lt;br/&gt;Clarifications:&lt;br/&gt;- ST: Speedy trial, whereby &amp;gt; T% signals on a block activate the rule&lt;br/&gt;- neg-ST: Speedy Trial, whereby &amp;gt;X% signals on a block Reject the rule&lt;br/&gt;- neg-ST and ST at the same time on different bits: 11 or 00 are &amp;#34;abstain&amp;#34;&lt;br/&gt;votes and are discarded. only 10 or 01 are counted. The purpose of&lt;br/&gt;simultaneous bits is to allow both earlier lock in and to permit early&lt;br/&gt;failure, rather than just one or the other.&lt;br/&gt;- PoW Fork: If a new rule is active, but there is insufficient hashrate,&lt;br/&gt;the rule must be abandoned or PoW must be changed to minimize disruption.&lt;br/&gt;In order to minimize disruption, a node will consider an alternative PoW&lt;br/&gt;chain if &amp;lt; 1/4 of the typical hash rate is seen for a day. Alternative PoW&lt;br/&gt;is defined as SHA-256 10,000 layers, and starts at low difficulty. This is&lt;br/&gt;selected to be maximally similar to Bitcoin&amp;#39;s existing PoW, but&lt;br/&gt;sufficiently different to obviate extant ASICS. A node will consider the&lt;br/&gt;new PoW to be equal in value to the old PoW, and will select between the&lt;br/&gt;two based on most-work. Work can be either within a single chain. The new&lt;br/&gt;PoW should have a difficulty adjustment every day for the first month, at&lt;br/&gt;which point, it will relax to every 2 weeks. The details of this should be&lt;br/&gt;described in a separate BIP.&lt;br/&gt;- PoW Fork Lockin: PoW fork is only *required* once the new rule is active.&lt;br/&gt;Thus it&amp;#39;s not required in the case of mandatory signalling to force the&lt;br/&gt;signalling contemporaneously, but it can be used to commit to forking the&lt;br/&gt;PoW at some time in the future. It may make sense to not activate the new&lt;br/&gt;rule till the new PoW is active. The game theory of this should be studied&lt;br/&gt;carefully, it is my opinion that the safest option is to PoW fork during&lt;br/&gt;signalling as otherwise miners may protest progress at all.&lt;br/&gt;- Changes: Any time the underlying activation proposal is changed, the&lt;br/&gt;process is restarted. E.g., suppose taproot is rejected because Quantum&lt;br/&gt;Scaries, and we hash the key. The process restarts from the beginning.&lt;br/&gt;Restarts can only occur during quieting periods.&lt;br/&gt;- Quieting Period 1: In the first quieting period, if reached, the &amp;#34;Bitcoin&lt;br/&gt;Core Community&amp;#34; can release the next step, or change the BIP. I left out&lt;br/&gt;failing in this period as a change or a redeployment should always be&lt;br/&gt;attempted.&lt;br/&gt;- Quieting Period 2: In the second quieting period, the outcome is either&lt;br/&gt;to reject the change entirely or to agree to force it. The &amp;#34;Bitcoin Core&lt;br/&gt;Community&amp;#34; may also prepare the release at this stage, and sign, but should&lt;br/&gt;re-label the client as &amp;#34;Bitcoin Community&amp;#39;s &amp;lt;Feature&amp;gt; Forcing Client&amp;#34;.  A&lt;br/&gt;release labeled &amp;#34;Bitcoin Core&amp;#34; may also be made without mandatory&lt;br/&gt;signalling and without forced activation can also be made, such a client&lt;br/&gt;should have (depending on if the flag day is to use signalling) either&lt;br/&gt;ability to activate in response to signalling or a hidden&lt;br/&gt;&amp;lt;feature&amp;gt;activeathash parameter to allow clients to enable the feature&lt;br/&gt;post-hoc of the activating block.&lt;br/&gt;- Forced Signalling: It&amp;#39;s unclear to me the merit of forced signalling&lt;br/&gt;being 90% of 2016 blocks v.s. 90% of 100 blocks. A shorter forced signaling&lt;br/&gt;assuages certain concerns around lost hashrate -- 1 day of disruption is a&lt;br/&gt;lot better than 2 weeks.&lt;br/&gt;- Timeline: As spec&amp;#39;d above, this whole process takes about 2 years worst&lt;br/&gt;case. ST1 0 months; Quieting 1 at 3 months; ST2 at 6 months; Quieting 2 at&lt;br/&gt;9 months, final attempt at 1 year. The Forcing client period should&lt;br/&gt;probably be 1 yr till active. This is *a bit* slower than the &amp;#34;BIP8&lt;br/&gt;LOT=True UASF Client&amp;#34;, but I think not so much slower that it&amp;#39;s unworkable.&lt;br/&gt;&lt;br/&gt;The most contentious part of this I intuit to be the PoW Fork -- please,&lt;br/&gt;let&amp;#39;s avoid discussing the mechanic of how to most safely accomplish this.&lt;br/&gt;The main point of including it in this diagram is to emphasize that if you&lt;br/&gt;commit to being on a minority chain with because of a rule activation with,&lt;br/&gt;say, 5% hashrate, you would experience very tangible disruption. In theory,&lt;br/&gt;every fork upgrade (even signalled) entails such a risk, but we assume some&lt;br/&gt;level of miner honesty (unfortunately!) that they never signal falsely.&lt;br/&gt;This may be a bad assumption with mandatory signalling. The alternative is&lt;br/&gt;to permit hard forks in our diagram, and allow users to downgrade their&lt;br/&gt;client and deactivate this rule. Since this can lead to loss of funds, we&lt;br/&gt;do not consider this a safe option, and it is a hardfork as well so is&lt;br/&gt;technically compatible with the &amp;#34;PoW fork&amp;#34; branch.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Questions I have:&lt;br/&gt;&lt;br/&gt;1) What state transitions are missing from this diagram? Are there other&lt;br/&gt;paths that should be included?&lt;br/&gt;2) Is it ever feasible to make a change to the upgrade and not restart the&lt;br/&gt;whole process?&lt;br/&gt;3) How long should all of the periods be? Can the 1st 2 ST&amp;#39;s be 3 month?&lt;br/&gt;Should we make the second one 6 month? Does it depend on previous signalled&lt;br/&gt;hashrate?&lt;br/&gt;4) Do we ever adjust signalling thresholds?&lt;br/&gt;5) Does forced signalling need to be 2016 blocks?&lt;br/&gt;6) In the second ST should the min active height be allowed to be within&lt;br/&gt;signalling time if &amp;gt; 3 mo?&lt;br/&gt;7) Under what circumstances would we *want* to skip the second ST period&lt;br/&gt;and directly signal? What would we lose by committing to not skipping it,&lt;br/&gt;ever (6 months?).&lt;br/&gt;8) I purposefully left the purple edge from ST2 bit 2 to Quieting 2: in&lt;br/&gt;theory, this edge is not there because it is overruled by the neg-ST&lt;br/&gt;failing to fail. Under what circumstances might we give this precedence&lt;br/&gt;over neg-ST? E.g., signalling activate &amp;lt; 50%?&lt;br/&gt;9) How much parameter flexibility do we have during Quieting periods?&lt;br/&gt;Should we be fixed beforehand?&lt;br/&gt;10) who wants to write the software for any of this... *noses*&lt;br/&gt;11) do we need to hard-code the PoW fork ahead of time? Or can it just be&lt;br/&gt;&amp;#34;prepared&amp;#34; as an alt binary in case of emergency?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20210422/f50fe48c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210422/f50fe48c/attachment-0001.html&amp;gt&lt;/a&gt;;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;A non-text attachment was scrubbed...&lt;br/&gt;Name: Activation.png&lt;br/&gt;Type: image/png&lt;br/&gt;Size: 81125 bytes&lt;br/&gt;Desc: not available&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210422/f50fe48c/attachment-0001.png&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210422/f50fe48c/attachment-0001.png&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:52:01&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdzjmy8cpcnf4yh23uf8exp84444xvls0953dhzul5upl7syfs8fczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgaygupg</id>
    
      <title type="html">📅 Original date posted:2021-04-24 📝 Original message:Inline ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdzjmy8cpcnf4yh23uf8exp84444xvls0953dhzul5upl7syfs8fczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgaygupg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvd6z2m6jw7jqttdel8rg93l4pn45s40vhfkly7akuxfzmqun6x2gdlux33&#39;&gt;nevent1q…ux33&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-24&lt;br/&gt;📝 Original message:Inline responses&lt;br/&gt;&lt;br/&gt;On Fri, Apr 23, 2021, 11:18 AM David A. Harding &amp;lt;dave at dtrt.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Tue, Apr 20, 2021 at 08:46:07AM -0700, Jeremy via bitcoin-dev wrote:&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;&lt;br/&gt;&amp;gt; * &amp;gt; Script is technically &amp;#34;too wide&amp;#34; a type as what I really want is to &amp;gt;&lt;br/&gt;&amp;gt; only return coins with known output types. I don&amp;#39;t understand this&lt;br/&gt;&amp;gt; concern.  If script is too wide a type, then OP_RETURN being a scriptPubKey&lt;br/&gt;&amp;gt; of arbitrary length up to almost a million bytes is also going to be too&lt;br/&gt;&amp;gt; wide, right?*&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I meant the type itself is too wide, not the length of the value. As in&lt;br/&gt;Script can represent things we know nothing about. There&amp;#39;s a bit of leaky&lt;br/&gt;abstraction since the values self describe the type they are. For addresses&lt;br/&gt;it&amp;#39;s just representations IMO for the standard output types one might&lt;br/&gt;expect from standard software.&lt;br/&gt;&lt;br/&gt;Btw: According to... Oh wait... You?&lt;br/&gt;&lt;a href=&#34;https://bitcoin.stackexchange.com/questions/35878/is-there-a-maximum-size-of-a-scriptsig-scriptpubkey&#34;&gt;https://bitcoin.stackexchange.com/questions/35878/is-there-a-maximum-size-of-a-scriptsig-scriptpubkey&lt;/a&gt;&lt;br/&gt;the max size is 10k bytes. Still probably too big for an address, but I&amp;#39;d&lt;br/&gt;be ok with making op_return addresses only defined for a small size (e.g.&lt;br/&gt;128 bytes?)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&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;&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;&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; * &amp;gt; 1) Should it be human readable &amp;amp; checksummed or encoded? It should&lt;br/&gt;&amp;gt; absolutely not be human readable in the sense of being meaningful to&lt;br/&gt;&amp;gt; humans.  We&amp;#39;ve seen in the past that tools and sites that display OP_RETURN&lt;br/&gt;&amp;gt; data as ASCII encourage people to put text in the block chain that is&lt;br/&gt;&amp;gt; offensive and illegal.  This puts people running nodes at risk of social&lt;br/&gt;&amp;gt; and legal intervention.  Bitcoin&amp;#39;s premissionless nature means we can&amp;#39;t&lt;br/&gt;&amp;gt; stop people from creating such problems, but we can lower the risk by&lt;br/&gt;&amp;gt; having our tools default to meaningless representations of OP_RETURN data.&lt;br/&gt;&amp;gt; The best advice I&amp;#39;ve seen is to display OP_RETURN data in hex.  It&amp;#39;s still&lt;br/&gt;&amp;gt; possible to say things like &amp;#34;dead beef&amp;#34; with that, but significant abuse is&lt;br/&gt;&amp;gt; hard.  This will, of course, make even 80 byte OP_RETURN &amp;#34;addresses&amp;#34; very&lt;br/&gt;&amp;gt; long.*&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Is it possible/easy to, say, using bech32m make an inappropriate message in&lt;br/&gt;the address? You&amp;#39;d have to write the message, then see what it decodes to&lt;br/&gt;without checking, and then re encode? I guess this is worse than hex?&lt;br/&gt;&lt;br/&gt;But it seems this is a general thing... If you wanted an inappropriate&lt;br/&gt;message you could therefore just use bech32m addressed outputs.&lt;br/&gt;&lt;br/&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; * 2) Should it have a fixed length of max 40-80 bytes or should we support&lt;br/&gt;&amp;gt; &amp;gt; arbitrary length strings? If it doesn&amp;#39;t support the fell range,&lt;br/&gt;&amp;gt; somebody&amp;#39;s just going to complain later and there will have to be a v2&lt;br/&gt;&amp;gt; address.*&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;So 10,000 bytes? Or do we care to represent outputs that would be consensus&lt;br/&gt;invalid?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&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;&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;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * &amp;gt; 3) Should it be possible (i.e., from core) to pay into such an&lt;br/&gt;&amp;gt; OP_RETURN or &amp;gt; should we categorize OP_RETURNS as a non-payable address&lt;br/&gt;&amp;gt; type (and just use &amp;gt; it for parsing blockdata) I don&amp;#39;t think including&lt;br/&gt;&amp;gt; arbitrary data in the block chain is something that&amp;#39;s currently useful for&lt;br/&gt;&amp;gt; typical end users, and applications that want to use OP_RETURN with Bitcoin&lt;br/&gt;&amp;gt; Core can already call create(psbt|rawtransaction) with the `data` field, so&lt;br/&gt;&amp;gt; I&amp;#39;d be mildly opposed in including such a feature in Bitcoin Core&amp;#39;s&lt;br/&gt;&amp;gt; wallet.  If at least a few other wallets add the feature to pay OP_RETURN&lt;br/&gt;&amp;gt; &amp;#34;addresses&amp;#34; and it seems popular, then I&amp;#39;m wrong and so I would probably&lt;br/&gt;&amp;gt; then change my position.*&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;One of the nice things is that the current psbt interface uses a blind&lt;br/&gt;union type whereby the entires in an array are either [address, amount] or&lt;br/&gt;[&amp;#34;data&amp;#34;, hex]. Having an address type would allow more uniform handling,&lt;br/&gt;which is convenient for strongly typed RPC bindings (e.g. rust bitcoin uses&lt;br/&gt;a hashmap of address to amount so without a patch you can&amp;#39;t create op&lt;br/&gt;returns).&lt;br/&gt;&lt;br/&gt;&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;&lt;br/&gt;&amp;gt; * Regarding &amp;#34;parsing block data&amp;#34;, I don&amp;#39;t think there&amp;#39;s any need to change&lt;br/&gt;&amp;gt; Bitcoin Core&amp;#39;s current representation of OP_RETURN outputs (which is just&lt;br/&gt;&amp;gt; showing the hex-encoded script in RPC output).  For any program needing&lt;br/&gt;&amp;gt; OP_RETURN output, hex format is going to be a the next best thing to&lt;br/&gt;&amp;gt; getting it in raw binary.  Any other address format is going to be equal or&lt;br/&gt;&amp;gt; more work*.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Thats a fair point. I&amp;#39;m mostly thinking about this in the context of&lt;br/&gt;strongly typed languages/frameworks where you&amp;#39;ll get an address object or&lt;br/&gt;enum out, rather than something *stringly* typed. But yes in terms of&lt;br/&gt;stringy languages I don&amp;#39;t think any changes are needed.&lt;br/&gt;&lt;br/&gt;*Additionally, as mentioned in the other thread about OP_RETURN this*&lt;br/&gt;*week, increasing transaction fees should increasingly push uses of*&lt;br/&gt;*OP_RETURN off the network or into more efficient constructions, so it*&lt;br/&gt;*doesn&amp;#39;t seem warranted to me to spend a lot of time trying to optimize*&lt;br/&gt;*how we use it when we&amp;#39;ll be using it less and less over time.*&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Hmm. I agree it should get priced out over time. However there are some&lt;br/&gt;uses for this kind of stuff. E.g. stealth addresses, or a single instance&lt;br/&gt;of open time stamps.&lt;br/&gt;&lt;br/&gt;The main reason I think they merit some sort of std address type is that&lt;br/&gt;I&amp;#39;m writing software that can handle things that we might reasonably see on&lt;br/&gt;the network. And it&amp;#39;s relatively annoying (without a custom type) to&lt;br/&gt;represent OP_RETURN as a not-exceptional type of thing.&lt;br/&gt;&lt;br/&gt;In my code what I have done is added the following type:&lt;br/&gt;&lt;br/&gt;pub enum ExtendedAddress {&lt;br/&gt;/// A regular standard address type&lt;br/&gt;Address(bitcoin::Address),&lt;br/&gt;/// An OP_RETURN&lt;br/&gt;OpReturn(OpReturn),&lt;br/&gt;/// Unknown&lt;br/&gt;Unknown(bitcoin::Script),&lt;br/&gt;}&lt;br/&gt;Which works more or less fine, but I would much prefer to not have to do&lt;br/&gt;this in a custom way, as opposed to a way which is defined in a standard&lt;br/&gt;manner across all software (after all, that&amp;#39;s the point of standards).&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&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/20210424/a12ae065/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210424/a12ae065/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:51:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw0wrgav75ny82t6kfrg69r2k8sn8fdt2yskkqjyfd576cj8yxy0czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg7v2djx</id>
    
      <title type="html">📅 Original date posted:2021-04-16 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw0wrgav75ny82t6kfrg69r2k8sn8fdt2yskkqjyfd576cj8yxy0czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg7v2djx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspc2nfsm5huf0evqwn8hrhecyusj8qsapjzm43hda3ytaxm6cpj5qux5egl&#39;&gt;nevent1q…5egl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-16&lt;br/&gt;📝 Original message:I think you need to hard deprecate the PoW for this to work, otherwise all&lt;br/&gt;old miners are like &amp;#34;toxic waste&amp;#34;.&lt;br/&gt;&lt;br/&gt;Imagine one miner turns on a S9 and then ramps up difficulty for everyone&lt;br/&gt;else.&lt;br/&gt;&lt;br/&gt;On Fri, Apr 16, 2021, 2:08 PM Erik Aronesty 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; Not sure of the best place to workshop ideas, so please take this with&lt;br/&gt;&amp;gt; a grain of salt.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Starting with 3 assumptions:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - assume that there exists a proof-of-burn that, for Bitcoin&amp;#39;s&lt;br/&gt;&amp;gt; purposes, accurately-enough models the investment in and development&lt;br/&gt;&amp;gt; of ASICs to maintain miner incentive.&lt;br/&gt;&amp;gt; - assume the resulting timing problem &amp;#34;how much burn is enough to keep&lt;br/&gt;&amp;gt; blocks 10 minutes apart and what does that even mean&amp;#34;  is also...&lt;br/&gt;&amp;gt; perfectly solvable&lt;br/&gt;&amp;gt; - assume &amp;#34;everyone unanimously loves this idea&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The transition *could* look like this:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - validating nodes begin to require proof-of-burn, in addition to&lt;br/&gt;&amp;gt; proof-of-work (soft fork)&lt;br/&gt;&amp;gt;  - the extra expense makes it more expensive for miners, so POW slowly&lt;br/&gt;&amp;gt; drops&lt;br/&gt;&amp;gt;  - on a predefined schedule, POB required is increased to 100% of the&lt;br/&gt;&amp;gt; &amp;#34;required work&amp;#34; to mine&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given all of that, am I correct in thinking that a hard fork would not&lt;br/&gt;&amp;gt; be necessary?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; IE: We could transition to another &amp;#34;required proof&amp;#34; - such as a&lt;br/&gt;&amp;gt; quantum POW or a POB (above) or something else ....  in a back-compat&lt;br/&gt;&amp;gt; way (existing nodes not aware of the rules would continue to&lt;br/&gt;&amp;gt; validate).&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/20210416/1d9aee05/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210416/1d9aee05/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T00:51:51&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxhg3hgy6y003lskqe0xfma6dn5xk0n5naur95zm8u2qd5r2ekhtczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg66ytch</id>
    
      <title type="html">📅 Original date posted:2021-04-10 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxhg3hgy6y003lskqe0xfma6dn5xk0n5naur95zm8u2qd5r2ekhtczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg66ytch" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszpy24g5j5wxltkqa89rgavncq7g759ert8nsczjchnuy7ndkhlgq47rrkc&#39;&gt;nevent1q…rrkc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-10&lt;br/&gt;📝 Original message:I concur that reviewing #21377 is the best path at this time.&lt;br/&gt;&lt;br/&gt;However, I want to draw attention to the middle road here:&lt;br/&gt;&lt;br/&gt;If Core chooses to not release activation params (which has been discussed&lt;br/&gt;as a general concept previously), #21377 can also be used to safely issue a&lt;br/&gt;community release.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s a false dichotomy between ST released by Core and a BIP8 UASF.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sat, Apr 10, 2021 at 9:48 AM Michael Folkson 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 Bitcoin Mechanic&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I will attend but I will be looking at Core PR #21377 over the next&lt;br/&gt;&amp;gt; couple of days and I would encourage other reviewers to review that PR&lt;br/&gt;&amp;gt; too. If that PR is merged into Core I would strongly recommend any&lt;br/&gt;&amp;gt; alternative release be fully compatible with the activation parameters&lt;br/&gt;&amp;gt; in Core.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We can discuss in the meeting what we think the cut off date should be&lt;br/&gt;&amp;gt; for when Core should no longer be a consideration. Personally I think&lt;br/&gt;&amp;gt; (and hope) we will see progress on #21377 in the coming days.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For the sake of the mailing list Bitcoin Mechanic has set up a meeting&lt;br/&gt;&amp;gt; to discuss an alternative release to Core with Taproot activation&lt;br/&gt;&amp;gt; code.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks&lt;br/&gt;&amp;gt; Michael&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Taproot activation meeting on IRC - Tuesday 13th April 19:00 UTC&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The focus of the meeting will be ratifying the Taproot activation plan&lt;br/&gt;&amp;gt; previously discussed at the March 16th meeting (aka 2021-03 Plan Y as&lt;br/&gt;&amp;gt; summarized here):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://docs.google.com/spreadsheets/d/1K3pmH09yXLTHGV3wqFZGR3ei7QVwtdEwo0PjI2NHD3w/edit#gid=0&#34;&gt;https://docs.google.com/spreadsheets/d/1K3pmH09yXLTHGV3wqFZGR3ei7QVwtdEwo0PjI2NHD3w/edit#gid=0&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; While there was never any consensus reached on the LOT parameter, there&lt;br/&gt;&amp;gt; appears to be consensus on BIP8 and the remaining parameters, and more than&lt;br/&gt;&amp;gt; sufficient support for LOT=True to proceed safely.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Miners will have 18 months in which to signal and accelerate activation.&lt;br/&gt;&amp;gt; If not, taproot will activate regardless.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; With a majority of the economy running this it will guarantee eventual&lt;br/&gt;&amp;gt; lock-in of taproot with the smallest chance of a chain split.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a reminder, the channel is also open for ongoing discussion 24/7, and&lt;br/&gt;&amp;gt; there is a web chat client here:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://webchat.freenode.net/?channel=##taproot-activation&#34;&gt;https://webchat.freenode.net/?channel=##taproot-activation&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Best,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin Mechanic&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Sent with [ProtonMail](&lt;a href=&#34;https://protonmail.com/&#34;&gt;https://protonmail.com/&lt;/a&gt;) Secure Email.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Michael Folkson&lt;br/&gt;&amp;gt; Email: michaelfolkson at gmail.com&lt;br/&gt;&amp;gt; Keybase: michaelfolkson&lt;br/&gt;&amp;gt; PGP: 43ED C999 9F85 1D40 EAF4 9835 92D6 0159 214C FEE3&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/20210410/94434db8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210410/94434db8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:31:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsg9v4lquc98g7d3w2rl9d2k9rqyf5ts4wxnyxwawaq9l9zme528sczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgu8sf2x</id>
    
      <title type="html">📅 Original date posted:2021-04-06 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsg9v4lquc98g7d3w2rl9d2k9rqyf5ts4wxnyxwawaq9l9zme528sczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgu8sf2x" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyy4dkkazdh4e5wwn2ccg26nxzlvl427xjuypwyqpvwts7sypp7yghy2w69&#39;&gt;nevent1q…2w69&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-04-06&lt;br/&gt;📝 Original message:I found the &amp;#34;50% chance of activating&amp;#34; a bit confusing of a watermark, so I&lt;br/&gt;asked AJ if he didn&amp;#39;t mind producing and tabulating the 10% chance, 50%&lt;br/&gt;chance, and 90% chance to show the sharpness of the bounds better. Each&lt;br/&gt;category below shows the single-shot and repeated trial odds for the range&lt;br/&gt;of trials (5 to 7). Additionally, I ran the 99% &amp;amp; 1% band to show that&lt;br/&gt;we&amp;#39;re likely to not have a false positive if &amp;lt; 87% is signalling nor a&lt;br/&gt;false negative if &amp;gt; 90% is signalling&lt;br/&gt;&lt;br/&gt;1%:&lt;br/&gt;    87.61% hashpower gives 0.20188% chance of success for 0.01005% chance&lt;br/&gt;over 5 trials&lt;br/&gt;    87.47% hashpower gives 0.14044% chance of success for 0.00979% chance&lt;br/&gt;over 7 trials&lt;br/&gt;    86.74% hashpower gives 0.01929% chance of success for 0.00979% chance&lt;br/&gt;over 51 trials&lt;br/&gt;    86.74% hashpower gives 0.02080% chance of success for 0.01138% chance&lt;br/&gt;over 55 trials&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;99%:&lt;br/&gt;    89.34% hashpower gives 60.19226% chance of success for 0.99000% chance&lt;br/&gt;over 5 trials&lt;br/&gt;    89.08% hashpower gives 48.20380% chance of success for 0.99000% chance&lt;br/&gt;over 7 trials&lt;br/&gt;&lt;br/&gt;    87.94% hashpower gives 8.63591% chance of success for 0.99001% chance&lt;br/&gt;over 51 trials&lt;br/&gt;    87.90% hashpower gives 8.03152% chance of success for 0.99000% chance&lt;br/&gt;over 55 trials&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;I was also curious to see what hashrate we&amp;#39;d need to have the classic 5 9&amp;#39;s&lt;br/&gt;of reliability if we were to only have *two* periods to signal. This serves&lt;br/&gt;a decent check for the situation where the earlier periods in a ST should&lt;br/&gt;be discounted (i.e., P(signals&amp;gt; 90% | first 3 periods) = 0) because miners&lt;br/&gt;still need time to upgrade.&lt;br/&gt;&lt;br/&gt;91.03% hashpower gives 99.68578% chance of success for 0.99999% chance over&lt;br/&gt;2 trials&lt;br/&gt;&lt;br/&gt;I believe this demonstrates more strongly that MTP can be used to ensure a&lt;br/&gt;smooth upgrade.&lt;br/&gt;&lt;br/&gt;------------------------&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Should&amp;#39;ve been 1815, and seems like I had some older code that deals&lt;br/&gt;with precision better, so:&lt;br/&gt;&lt;br/&gt;10%:&lt;br/&gt;   88.15% gives 2.08538% chance of success for 0.10001% chance over 5 trials&lt;br/&gt;   87.98% gives 1.49100% chance of success for 0.09982% chance over 7 trials&lt;br/&gt;&lt;br/&gt;   87.16% gives 0.20610% chance of success for 0.09987% chance over 51&lt;br/&gt;trials&lt;br/&gt;   87.13% gives 0.18834% chance of success for 0.09849% chance over 55&lt;br/&gt;trials&lt;br/&gt;&lt;br/&gt;50%:&lt;br/&gt;   88.67% gives 12.94200% chance of success for 0.49992% chance over 5&lt;br/&gt;trials&lt;br/&gt;   88.47% gives 9.42506% chance of success for 0.49990% chance over 7 trials&lt;br/&gt;&lt;br/&gt;   87.53% gives 1.35127% chance of success for 0.50035% chance over 51&lt;br/&gt;trials&lt;br/&gt;   87.50% gives 1.25229% chance of success for 0.49998% chance over 55&lt;br/&gt;trials&lt;br/&gt;&lt;br/&gt;90%:&lt;br/&gt;   89.07% gives 36.90722% chance of success for 0.90002% chance over 5&lt;br/&gt;trials&lt;br/&gt;   88.83% gives 28.02839% chance of success for 0.89997% chance over 7&lt;br/&gt;trials&lt;br/&gt;&lt;br/&gt;   87.78% gives 4.41568% chance of success for 0.90006% chance over 51&lt;br/&gt;trials&lt;br/&gt;   87.75% gives 4.09983% chance of success for 0.89999% chance over 55&lt;br/&gt;trials&lt;br/&gt;&lt;br/&gt;So 0.24% is the biggest difference for 5-7 trials at 90%, but the entire&lt;br/&gt;range is under 2% anyway (87.13% for 55 trials to get 10% vs 89.07%&lt;br/&gt;for 5 trials to get 90%).&lt;br/&gt;&lt;br/&gt;Note, each &amp;#34;trial&amp;#34; is a retarget period here...&lt;br/&gt;&lt;br/&gt;Code:&lt;br/&gt;&lt;a href=&#34;https://gist.github.com/ajtowns/fbcf30ed9d0e1708fdc98a876a04ff69#file-repeated_trials-py&#34;&gt;https://gist.github.com/ajtowns/fbcf30ed9d0e1708fdc98a876a04ff69#file-repeated_trials-py&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Apr 5, 2021 at 3:35 AM Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Sat, Apr 03, 2021 at 09:39:11PM -0700, Jeremy via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; As such, the main conversation in this agenda item is&lt;br/&gt;&amp;gt; &amp;gt; around the pros/cons of height or MTP and determining if we can reach&lt;br/&gt;&amp;gt; consensus&lt;br/&gt;&amp;gt; &amp;gt; on either approach.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Here&amp;#39;s some numbers.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given a desired signalling period of xxx days, where signaling begins&lt;br/&gt;&amp;gt; on the first retarget boundary after the starttime and ends on the last&lt;br/&gt;&amp;gt; retarget boundary before the endtime, this is how many retarget periods&lt;br/&gt;&amp;gt; you get (based on blocks since 2015-01-01):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  90 days: mainnet  5-7 full 2016-block retarget periods&lt;br/&gt;&amp;gt; 180 days: mainnet 11-14&lt;br/&gt;&amp;gt; 365 days: mainnet 25-27&lt;br/&gt;&amp;gt; 730 days: mainnet 51-55&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (This applies to non-signalling periods like the activation/lock in delay&lt;br/&gt;&amp;gt; too of course. If you change it so that it ends at the first retarget&lt;br/&gt;&amp;gt; period after endtime, all the values just get incremented -- ie, 6-8,&lt;br/&gt;&amp;gt; 12-15 etc)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If I&amp;#39;ve got the maths right, then requiring 1814 of 2016 blocks to signal,&lt;br/&gt;&amp;gt; means that having 7 periods instead of 5 lets you get a 50% chance of&lt;br/&gt;&amp;gt; successful activation by maintaining 89.04% of hashpower over the entire&lt;br/&gt;&amp;gt; period instead of 89.17%, while 55 periods instead of 51 gives you a 50%&lt;br/&gt;&amp;gt; chance of success with 88.38% hashpower instead of 88.40% hashpower.&lt;br/&gt;&amp;gt; So the &amp;#34;repeated trials&amp;#34; part doesn&amp;#39;t look like it has any significant&lt;br/&gt;&amp;gt; effect on mainnet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you target yy periods instead of xxx days, starting and ending on a&lt;br/&gt;&amp;gt; retarget boundary, you get the following stats from the last few years&lt;br/&gt;&amp;gt; of mainnet (again starting at 2015-01-01):&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  1 period:  mainnet 11-17 days (range 5.2 days)&lt;br/&gt;&amp;gt;  7 periods: mainnet 87-103 days (range 15.4 days)&lt;br/&gt;&amp;gt; 13 periods: mainnet 166-185 days (range 17.9 days)&lt;br/&gt;&amp;gt; 27 periods: mainnet 352-377 days (range 24.4 days)&lt;br/&gt;&amp;gt; 54 periods: mainnet 711-747 days (range 35.0 days)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As far as I can see the questions that matter are:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * is signalling still possible by the time enough miners have upgraded&lt;br/&gt;&amp;gt;    and are ready to start signalling?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * have nodes upgraded to enforce the new rules by the time activation&lt;br/&gt;&amp;gt;    occurs, if it occurs?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But both those benefit from less real time variance, rather than less&lt;br/&gt;&amp;gt; variance in the numbers of signalling periods, at least in every way&lt;br/&gt;&amp;gt; that I can think of.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Corresponding numbers for testnet:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  90 days: testnet   5-85&lt;br/&gt;&amp;gt; 180 days: testnet  23-131&lt;br/&gt;&amp;gt; 365 days: testnet  70-224&lt;br/&gt;&amp;gt; 730 days: testnet 176-390&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (A 50% chance of activating within 5 periods requires sustaining 89.18%&lt;br/&gt;&amp;gt; hashpower; within 85 periods, 88.26% hashpower; far smaller differences&lt;br/&gt;&amp;gt; with all the other ranges -- of course, presumably the only way the&lt;br/&gt;&amp;gt; higher block rates ever actually happen is by someone pointing an ASIC at&lt;br/&gt;&amp;gt; testnet, and thus controlling 100% of blocks for multiple periods anyway)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   1 period:  testnet 5.6minutes-26 days (range 26.5 days)&lt;br/&gt;&amp;gt;  13 periods: testnet 1-135 days (range 133.5 days)&lt;br/&gt;&amp;gt;  27 periods: testnet 13-192 days (range 178.3 days)&lt;br/&gt;&amp;gt;  54 periods: testnet 39-283 days (range 243.1 days)&lt;br/&gt;&amp;gt; 100 periods: testnet 114-476 days (range 360.9 days)&lt;br/&gt;&amp;gt;              (this is the value used in [0] in order to ensure 3 months&amp;#39;&lt;br/&gt;&amp;gt;               worth of signalling is available)&lt;br/&gt;&amp;gt; 132 periods: testnet 184-583 days (range 398.1 days)&lt;br/&gt;&amp;gt; 225 periods: testnet 365-877 days (range 510.7 days)&lt;br/&gt;&amp;gt; 390 periods: testnet 725-1403 days (range 677.1 days)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [0] &lt;a href=&#34;https://github.com/bitcoin/bips/pull/1081#pullrequestreview-621934640&#34;&gt;https://github.com/bitcoin/bips/pull/1081#pullrequestreview-621934640&lt;/a&gt;&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;&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/20210405/6228cbf2/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210405/6228cbf2/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:31:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy7fnkkqa7qgg3gr6qwyz0cy7teaf9n3garhfrzglxn7vnf7tmzeczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tged8pws</id>
    
      <title type="html">📅 Original date posted:2021-03-06 📝 Original message:Thank ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy7fnkkqa7qgg3gr6qwyz0cy7teaf9n3garhfrzglxn7vnf7tmzeczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tged8pws" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgws2xw7ectg6v2dy87mzdkhvf8k7yaqcv0skdf4sqn0v7s2zguls3cc48d&#39;&gt;nevent1q…c48d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-03-06&lt;br/&gt;📝 Original message:Thank you for resurfacing and collating this concept.&lt;br/&gt;&lt;br/&gt;At this time I don&amp;#39;t see major issues with this course of action and think&lt;br/&gt;it represents not only a reasonable compromise between all different&lt;br/&gt;perspectives, but also gives us an opportunity to learn more about less&lt;br/&gt;&amp;#39;slow&amp;#39; yet safe consensus upgrades. In particular, I am very happy to see&lt;br/&gt;the earliest activation concept included.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Mar 5, 2021 at 7:44 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 the ##taproot-activation IRC channel, Russell O&amp;#39;Connor recently&lt;br/&gt;&amp;gt; proposed a modification of the &amp;#34;Let&amp;#39;s see what happens&amp;#34; activation&lt;br/&gt;&amp;gt; proposal.[1] The idea received significant discussion and seemed&lt;br/&gt;&amp;gt; acceptable to several people who could not previously agree on a&lt;br/&gt;&amp;gt; proposal (although this doesn&amp;#39;t necessarily make it their first&lt;br/&gt;&amp;gt; choice).  The following is my attempt at a description.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. Start soon: shortly after the release of software containing this&lt;br/&gt;&amp;gt;    proposed activation logic, nodes will begin counting blocks towards&lt;br/&gt;&amp;gt;    the 90% threshold required to lock in taproot.[2]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Stop soon: if the lockin threshold isn&amp;#39;t reached within approximately&lt;br/&gt;&amp;gt;    three months, the activation attempt fails.  There is no mandatory&lt;br/&gt;&amp;gt;    activation and everyone is encouraged to try again using different&lt;br/&gt;&amp;gt;    activation parameters.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2. Delayed activation: in the happy occasion where the lockin threshold&lt;br/&gt;&amp;gt;    is reached, taproot is guaranteed to eventually activate---but not&lt;br/&gt;&amp;gt;    until approximately six months after signal tracking started.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Example timeline&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (All dates approximate; see the section below about BIP9 vs BIP8.)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - T&#43;0: release of one or more full nodes with activation code&lt;br/&gt;&amp;gt; - T&#43;14: signal tracking begins&lt;br/&gt;&amp;gt; - T&#43;28: earliest possible lock in&lt;br/&gt;&amp;gt; - T&#43;104: locked in by this date or need to try a different activation&lt;br/&gt;&amp;gt; process&lt;br/&gt;&amp;gt; - T&#43;194: activation (if lockin occurred)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Analysis&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The goal of Speedy Trial is to allow a taproot activation attempt to&lt;br/&gt;&amp;gt; either quickly succeed or quickly fail---without compromising safety in&lt;br/&gt;&amp;gt; either case.  Details below:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Mitigating the problems of early success&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; New rules added in a soft fork need to be enforced by a large part of&lt;br/&gt;&amp;gt; the economy or there&amp;#39;s a risk that a long chain of blocks breaking the&lt;br/&gt;&amp;gt; rules will be accepted by some users and rejected by others, causing a&lt;br/&gt;&amp;gt; chain split that can result in large direct losses to transaction&lt;br/&gt;&amp;gt; receivers and potentially even larger indirect losses to holders due to&lt;br/&gt;&amp;gt; reduced confidence in the safety of the Bitcoin system.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One step developers have taken in the past to ensure widespread adoption&lt;br/&gt;&amp;gt; of new consensus rules is programming in a delay between the time software&lt;br/&gt;&amp;gt; with those rules is expected to be released and when the software starts&lt;br/&gt;&amp;gt; tracking which blocks signal for activation.  For example:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     Soft fork        | Release    | Start      | Delta&lt;br/&gt;&amp;gt;     -----------------&#43;------------&#43;------------&#43;----------&lt;br/&gt;&amp;gt;     BIP68 (v0.12.1)  | 2016-04-15 | 2016-05-11 | 26 days&lt;br/&gt;&amp;gt;     BIP141 (v0.13.1) | 2016-10-27 | 2016-11-18 | 24 days&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     Sources: BitcoinCore.org,&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://gist.github.com/ajtowns/1c5e3b8bdead01124c04c45f01c817bc&#34;&gt;https://gist.github.com/ajtowns/1c5e3b8bdead01124c04c45f01c817bc&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Speedy Trial replaces most of that upfront delay with a backend delay.&lt;br/&gt;&amp;gt; No matter how fast taproot&amp;#39;s activation threshold is reached by miners,&lt;br/&gt;&amp;gt; there will be six months between the time signal tracking starts and when&lt;br/&gt;&amp;gt; nodes will begin enforcing taproot&amp;#39;s rules.  This gives the userbase even&lt;br/&gt;&amp;gt; more time to upgrade than if we had used the most recently proposed start&lt;br/&gt;&amp;gt; date for a BIP8 activation (~July 23rd).[2]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Succeed, or fail fast&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The earlier version of this proposal was documented over 200 days ago[3]&lt;br/&gt;&amp;gt; and taproot&amp;#39;s underlying code was merged into Bitcoin Core over 140 days&lt;br/&gt;&amp;gt; ago.[4]  If we had started Speedy Trial at the time taproot&lt;br/&gt;&amp;gt; was merged (which is a bit unrealistic), we would&amp;#39;ve either be less than&lt;br/&gt;&amp;gt; two months away from having taproot or we would have moved on to the&lt;br/&gt;&amp;gt; next activation attempt over a month ago.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Instead, we&amp;#39;ve debated at length and don&amp;#39;t appear to be any closer to&lt;br/&gt;&amp;gt; what I think is a widely acceptable solution than when the mailing list&lt;br/&gt;&amp;gt; began discussing post-segwit activation schemes over a year ago.[5]  I&lt;br/&gt;&amp;gt; think Speedy Trial is a way to generate fast progress that will either&lt;br/&gt;&amp;gt; end the debate (for now, if activation is successful) or give us some&lt;br/&gt;&amp;gt; actual data upon which to base future taproot activation proposals.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Of course, for those who enjoy the debate, discussion can continue while&lt;br/&gt;&amp;gt; waiting for the results of Speedy Trial.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Base activation protocol&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The idea can be implemented on top of either Bitcoin Core&amp;#39;s existing&lt;br/&gt;&amp;gt; BIP9 code or its proposed BIP8 patchset.[6]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - BIP9 uses two time-based[7] parameters, starttime and timeout.  Using&lt;br/&gt;&amp;gt;   these values plus a time-based parameter for the minimum activation&lt;br/&gt;&amp;gt;   delay would give three months for miners to activate taproot, but some&lt;br/&gt;&amp;gt;   of that time near the start or the end might not be usable due to&lt;br/&gt;&amp;gt;   signals only being measured in full retarget periods.  However, the&lt;br/&gt;&amp;gt;   six month time for users to upgrade their node would be not be&lt;br/&gt;&amp;gt;   affected by either slow or fast block production.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     BIP9 is already part of Bitcoin Core and I think the changes being&lt;br/&gt;&amp;gt;     proposed would be relatively small, resulting in a small patch that&lt;br/&gt;&amp;gt;     could be easy to review.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - BIP8 uses two height-based parameters, startheight and timeoutheight.&lt;br/&gt;&amp;gt;   Using height values would ensure miners had a certain number of&lt;br/&gt;&amp;gt;   retarget periods (6) to lock in taproot and that there&amp;#39;d be a certain&lt;br/&gt;&amp;gt;   number of blocks (about 24,000) until activation, although latest lock&lt;br/&gt;&amp;gt;   in and expected activation could occur moderately earlier or later&lt;br/&gt;&amp;gt;   than the estimated three and six months.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     BIP8 would likely be used if Speedy Trial fails, so it could be&lt;br/&gt;&amp;gt;     advantageous to base this proposal on BIP8 so that we gain&lt;br/&gt;&amp;gt;     experience running that code in production.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For additional discussion about using times versus heights, see today&amp;#39;s&lt;br/&gt;&amp;gt; log for ##taproot-activation.[11]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Additional concerns&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Encourages false signaling: false signaling is when miners signal&lt;br/&gt;&amp;gt;   readiness to enforce rules that their nodes don&amp;#39;t actually support.&lt;br/&gt;&amp;gt;   This was partially responsible for a six-block reorg shortly after the&lt;br/&gt;&amp;gt;   final BIP66 activation[8] and was found to still be a problem during&lt;br/&gt;&amp;gt;   the BIP68 lockin period despite BIP9 being designed to avoid it.[9]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Because Speedy Trial only gives miners a maximum of three months to&lt;br/&gt;&amp;gt;   signal support for taproot, it may encourage such false signaling.  If&lt;br/&gt;&amp;gt;   taproot locks in as a result of their signaling but most of them fail&lt;br/&gt;&amp;gt;   to upgrade by the activation date several months later, unprepared&lt;br/&gt;&amp;gt;   miners could lose large amounts of money and users could see long&lt;br/&gt;&amp;gt;   reorgs (with unupgraded nodes and SPV lite clients potentially losing&lt;br/&gt;&amp;gt;   money).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Compared to other activation proposals, I think the only difference is&lt;br/&gt;&amp;gt;   Speedy Trial&amp;#39;s short timeline.  False signaling is possible with any&lt;br/&gt;&amp;gt;   other proposal and the same problems can occur if miners fail to&lt;br/&gt;&amp;gt;   upgrade for any mandatory activation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ### Additional advantages&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - No mandatory signaling: at no time are miners required to signal by&lt;br/&gt;&amp;gt;   Speedy Trial.  This includes no mandatory signaling during the&lt;br/&gt;&amp;gt;   locked_in period(s), although such signaling will be encouraged (as it&lt;br/&gt;&amp;gt;   was with BIP9[10]).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; - Party time: to a lesser degree, a benefit mentioned for flag day&lt;br/&gt;&amp;gt;   activation may also apply here: we could get up to six months&lt;br/&gt;&amp;gt;   advanced notice of taproot activation, allowing users, developers, and&lt;br/&gt;&amp;gt;   organizations to prepare software, announcements, and celebrations for&lt;br/&gt;&amp;gt;   that event.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Implementation details and next steps&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Initial discussion about implementation may be found in today&amp;#39;s&lt;br/&gt;&amp;gt; ##taproot-activation log.[11] If it appears Speedy Trial may have&lt;br/&gt;&amp;gt; traction, Russell O&amp;#39;Connor has offered to work on a patch against BIP8&lt;br/&gt;&amp;gt; implementing it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Acknowledgments&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The original idea for a short-duration attempt was discussed in the&lt;br/&gt;&amp;gt; ##taproot-activation IRC channel last July and the revised idea saw&lt;br/&gt;&amp;gt; additional evaluation there this week.  Despite growing frustration,&lt;br/&gt;&amp;gt; discussion has been overwhelmingly constructive, for which all the&lt;br/&gt;&amp;gt; contributors should be commended.  Although this should not in any way&lt;br/&gt;&amp;gt; imply endorsement, I&amp;#39;m grateful for the review and comments on a draft&lt;br/&gt;&amp;gt; of this email by Adam Gibson, Andrew Chow, Anthony Towns, Chris Belcher,&lt;br/&gt;&amp;gt; Jeremy Rubin, Jonas Nick, Luke Dashjr, Michael Folkson, Russell&lt;br/&gt;&amp;gt; O&amp;#39;Connor, and IRC users maybehuman and proofofkeags&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Footnotes&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.bitcoin.it/wiki/Taproot_activation_proposals#Let.E2.80.99s_see_what_happens.2C_BIP8.28false.2C_3m.29&#34;&gt;https://en.bitcoin.it/wiki/Taproot_activation_proposals#Let.E2.80.99s_see_what_happens.2C_BIP8.28false.2C_3m.29&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [2] A threshold of 1,815/2,016 blocks (90%) in a single retarget period&lt;br/&gt;&amp;gt;     seemed to have near-universal support during the 2021-02-16 IRC&lt;br/&gt;&amp;gt;     meeting.  See:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.bitcoin.it/wiki/Taproot_activation_proposal_202102&#34;&gt;https://en.bitcoin.it/wiki/Taproot_activation_proposal_202102&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [3]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposals&amp;amp;oldid=68062&#34;&gt;https://en.bitcoin.it/w/index.php?title=Taproot_activation_proposals&amp;amp;oldid=68062&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [4] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/19953&#34;&gt;https://github.com/bitcoin/bitcoin/pull/19953&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [5]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017547.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-January/017547.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/19573&#34;&gt;https://github.com/bitcoin/bitcoin/pull/19573&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [7] BIP9&amp;#39;s times are based on the median of the past 11 blocks, which&lt;br/&gt;&amp;gt;     usually trails UTC by about 90 minutes but which can trail behind&lt;br/&gt;&amp;gt;     realtime significantly if miners are doing weird things.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [8] &lt;a href=&#34;https://en.bitcoin.it/wiki/July_2015_chain_forks&#34;&gt;https://en.bitcoin.it/wiki/July_2015_chain_forks&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [9] &lt;a href=&#34;https://buildingbitcoin.org/bitcoin-core-dev/log-2016-06-21.html#l-32&#34;&gt;https://buildingbitcoin.org/bitcoin-core-dev/log-2016-06-21.html#l-32&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [10]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/ed25cb58f605ba583c735f330482df0bf9348f3a/src/test/versionbits_tests.cpp#L337-L339&#34;&gt;https://github.com/bitcoin/bitcoin/blob/ed25cb58f605ba583c735f330482df0bf9348f3a/src/test/versionbits_tests.cpp#L337-L339&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [11] &lt;a href=&#34;http://gnusha.org/taproot-activation/2021-03-05.log&#34;&gt;http://gnusha.org/taproot-activation/2021-03-05.log&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/20210305/13bc9b4e/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210305/13bc9b4e/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:30:29&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz0rxjqarszjfn4cpapggnhhya5k3u0le7283sunfuauc7egtm0sczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tggwdw08</id>
    
      <title type="html">📅 Original date posted:2021-02-28 📝 Original message:Miners ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz0rxjqarszjfn4cpapggnhhya5k3u0le7283sunfuauc7egtm0sczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tggwdw08" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrqr0y4sj8q4mma7pjznghtf6zyf086l82g6840faq03d0wh7629saqr6he&#39;&gt;nevent1q…r6he&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-28&lt;br/&gt;📝 Original message:Miners still can generate invalid blocks as a result of SPV mining, and it&lt;br/&gt;could be profitable to do &amp;#34;bad block enhanced selfish mining&amp;#34; to take&lt;br/&gt;advantage of it.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Hard to analyze exactly what that looks like, but...&lt;br/&gt;&lt;br/&gt;E.g., suppose 20% is un-upgraded and 80% is upgraded. Taking 25% hashrate&lt;br/&gt;to mine bad blocks would mean 1/4th of the time you could make 20% of the&lt;br/&gt;hashrate mine bad blocks, overall a &amp;gt; 5% (series expansion) benefit. One&lt;br/&gt;could analyze out that the lost hash rate for bad blocks only matters for&lt;br/&gt;the first difficulty adjustment period you&amp;#39;re doing this for too, as the&lt;br/&gt;hashrate drop will be accounted for -- but then a miner can switch back to&lt;br/&gt;mining valid chain, giving themselves a larger % of hashrate.&lt;br/&gt;&lt;br/&gt;So it is still possible that an un-upgraded miner will fail part 3, and&lt;br/&gt;attempting to accommodate un-upgraded miners leads to some nasty&lt;br/&gt;oscillating hashrate being optimal.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sun, Feb 28, 2021 at 11:52 AM Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Note further that mandatory signaling isn&amp;#39;t &amp;#34;just&amp;#34; a flag day - unlike a&lt;br/&gt;&amp;gt; Taproot flag day (where miners running Bitcoin&lt;br/&gt;&amp;gt; Core unmodified today will not generate invalid blocks), a mandatory&lt;br/&gt;&amp;gt; signaling flag day blatantly ignores goal (3) from&lt;br/&gt;&amp;gt; my original post - it results in any miner who has not taken active action&lt;br/&gt;&amp;gt; (and ensured every part of their often-large&lt;br/&gt;&amp;gt; infrastructure has been correctly reconfigured) generating invalid blocks.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; As for &amp;#34;Taproot&amp;#34; took too long, hey, at least if its locked in people can&lt;br/&gt;&amp;gt; just build things assuming it exists. Some&lt;br/&gt;&amp;gt; already are, but once its clearly locked in, there&amp;#39;s no reason to not&lt;br/&gt;&amp;gt; continue other work at the same time.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 2/28/21 14:43, Jeremy via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; I agree with much of the logic presented by Matt here.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; BIP8 was intended to be simpler to agree on to maintain consensus, yet&lt;br/&gt;&amp;gt; we find ourselves in a situation where a &amp;#34;tiny&amp;#34;&lt;br/&gt;&amp;gt; &amp;gt; parameter has the potential to cause great network disruption and&lt;br/&gt;&amp;gt; confusion (rationality is not too useful a concept&lt;br/&gt;&amp;gt; &amp;gt; here given differing levels of sophistication and information). It is&lt;br/&gt;&amp;gt; therefore much simpler and more likely to be&lt;br/&gt;&amp;gt; &amp;gt; universally understood by all network participants to just have a flag&lt;br/&gt;&amp;gt; day. It is easier to communicate what users&lt;br/&gt;&amp;gt; &amp;gt; should do and when.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This is ultimately not coercive to users because the upgrade for Taproot&lt;br/&gt;&amp;gt; itself is provable and analyzable on its own,&lt;br/&gt;&amp;gt; &amp;gt; but activation parameters based on what % of economically relevant nodes&lt;br/&gt;&amp;gt; are running an upgrade by a certain date are&lt;br/&gt;&amp;gt; &amp;gt; not. Selecting these sorts of complicated consensus parameters may&lt;br/&gt;&amp;gt; ultimately present more opportunity for a cooptable&lt;br/&gt;&amp;gt; &amp;gt; consensus process than something more straightforward.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; That said, a few points strike me as worth delving into.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1) Con: Mandatory signalling is no different than a flag day. Mandatory&lt;br/&gt;&amp;gt; signaling is effectively 2 flag days -- one for&lt;br/&gt;&amp;gt; &amp;gt; the signaling rule, 1 for the taproot type. The reason for the 2 week&lt;br/&gt;&amp;gt; gap between flag day for signaling and flag day&lt;br/&gt;&amp;gt; &amp;gt; for taproot rules is, more or less, so that nodes who aren&amp;#39;t taproot&lt;br/&gt;&amp;gt; ready at the 1st flag day do not end up SPV mining&lt;br/&gt;&amp;gt; &amp;gt; (using standardness rules in mempool prevents them from mining an&lt;br/&gt;&amp;gt; invalid block on top of a valid tip, but does not&lt;br/&gt;&amp;gt; &amp;gt; ensure the tip is valid).&lt;br/&gt;&amp;gt; &amp;gt; 2) Con: Releasing a flag day without releasing the LOT=true code leading&lt;br/&gt;&amp;gt; up to that flag day means that clients would&lt;br/&gt;&amp;gt; &amp;gt; not be fully compatible with an early activation that could be proposed&lt;br/&gt;&amp;gt; before the flag day is reached. E.g., LOT=true&lt;br/&gt;&amp;gt; &amp;gt; is a flag day that retains the possibility of being compatible with&lt;br/&gt;&amp;gt; other BIP8 releases without changing software.&lt;br/&gt;&amp;gt; &amp;gt; 3) Pro: BIP-8 is partially in service of &amp;#34;early activation&amp;#34; and . I&amp;#39;m&lt;br/&gt;&amp;gt; personally skeptical that early activation is/was&lt;br/&gt;&amp;gt; &amp;gt; ever a good idea. A fixed activation date may be largely superior for&lt;br/&gt;&amp;gt; business purposes, software engineering schedules,&lt;br/&gt;&amp;gt; &amp;gt; etc. I think even with signaling BIP8, it would be possibly superior to&lt;br/&gt;&amp;gt; activate rules at a fixed date (or a quantized&lt;br/&gt;&amp;gt; &amp;gt; set of fixed dates, e.g. guaranteeing at least 3 months but maybe more).&lt;br/&gt;&amp;gt; &amp;gt; 4) Pro: part of the argument for BIP-8=false is that it is possible that&lt;br/&gt;&amp;gt; the rule could not activate, if signaling does&lt;br/&gt;&amp;gt; &amp;gt; not occur, providing additional stopgap against dev collusion and bugs.&lt;br/&gt;&amp;gt; But BIP-8 can activate immediately (with start&lt;br/&gt;&amp;gt; &amp;gt; times being proposed 1 month after release?) so we don&amp;#39;t have certainty&lt;br/&gt;&amp;gt; around how much time there is for that secondary&lt;br/&gt;&amp;gt; &amp;gt; review process (read -- I think it isn&amp;#39;t that valuable) and if there&lt;br/&gt;&amp;gt; *is* a deadly bug discovered, we might want to&lt;br/&gt;&amp;gt; &amp;gt; hard-fork to fix it even if it isn&amp;#39;t yet signaled for (e.g., if the rule&lt;br/&gt;&amp;gt; activates it enables more mining reward). So I&lt;br/&gt;&amp;gt; &amp;gt; think that it&amp;#39;s a healthier mindset to release a with definite deadline&lt;br/&gt;&amp;gt; and not rule out having to do a hard fork if&lt;br/&gt;&amp;gt; &amp;gt; there is a grave issue (we shouldn&amp;#39;t ever release a SF if we think this&lt;br/&gt;&amp;gt; is at all likely, mind you).&lt;br/&gt;&amp;gt; &amp;gt; 5) Con: It&amp;#39;s already taken so long for taproot, the schedule around&lt;br/&gt;&amp;gt; taproot was based on the idea it could early&lt;br/&gt;&amp;gt; &amp;gt; activate, 2022 is now too far away. I don&amp;#39;t know how to defray this&lt;br/&gt;&amp;gt; other than, if your preferred idea is 1 year flag&lt;br/&gt;&amp;gt; &amp;gt; day, to do that via LOT=true so that taproot can still have early&lt;br/&gt;&amp;gt; activation if desired.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Overall I agree with the point that all the contention around LOT, makes&lt;br/&gt;&amp;gt; a flag day look not so bad. And something&lt;br/&gt;&amp;gt; &amp;gt; closer to a flag day might not be so bad either for future forks as well.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; However, I think given the appetite for early activation, if a flag day&lt;br/&gt;&amp;gt; is desired I think LOT=true is the best option&lt;br/&gt;&amp;gt; &amp;gt; at this time as it allows our flag day to remain compatible with such an&lt;br/&gt;&amp;gt; early activation.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I think we can also clearly communicate that LOT=true for Taproot is not&lt;br/&gt;&amp;gt; a precedent setting occurence for any future&lt;br/&gt;&amp;gt; &amp;gt; forks (hold me accountable to not using this as precedent this should I&lt;br/&gt;&amp;gt; ever advocate for a SF with similar release&lt;br/&gt;&amp;gt; &amp;gt; parameters).&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;-------------- 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/20210228/df85cf85/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210228/df85cf85/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:29:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyt6gtvvkrc0ryhz2lxykf67zxwwcquslc833zrhp7vw3e90h57ugzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgzh500t</id>
    
      <title type="html">📅 Original date posted:2021-02-28 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyt6gtvvkrc0ryhz2lxykf67zxwwcquslc833zrhp7vw3e90h57ugzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgzh500t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0a9sefttcpcnjmn4sth2mgunphltz4zq04ctuvg3wv3q6ww06qfq6ymypz&#39;&gt;nevent1q…mypz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-28&lt;br/&gt;📝 Original message:I agree with much of the logic presented by Matt here.&lt;br/&gt;&lt;br/&gt;BIP8 was intended to be simpler to agree on to maintain consensus, yet we&lt;br/&gt;find ourselves in a situation where a &amp;#34;tiny&amp;#34; parameter has the potential to&lt;br/&gt;cause great network disruption and confusion (rationality is not too useful&lt;br/&gt;a concept here given differing levels of sophistication and information).&lt;br/&gt;It is therefore much simpler and more likely to be universally understood&lt;br/&gt;by all network participants to just have a flag day. It is easier to&lt;br/&gt;communicate what users should do and when.&lt;br/&gt;&lt;br/&gt;This is ultimately not coercive to users because the upgrade for Taproot&lt;br/&gt;itself is provable and analyzable on its own, but activation parameters&lt;br/&gt;based on what % of economically relevant nodes are running an upgrade by a&lt;br/&gt;certain date are not. Selecting these sorts of complicated consensus&lt;br/&gt;parameters may ultimately present more opportunity for a cooptable&lt;br/&gt;consensus process than something more straightforward.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;That said, a few points strike me as worth delving into.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;1) Con: Mandatory signalling is no different than a flag day. Mandatory&lt;br/&gt;signaling is effectively 2 flag days -- one for the signaling rule, 1 for&lt;br/&gt;the taproot type. The reason for the 2 week gap between flag day for&lt;br/&gt;signaling and flag day for taproot rules is, more or less, so that nodes&lt;br/&gt;who aren&amp;#39;t taproot ready at the 1st flag day do not end up SPV mining&lt;br/&gt;(using standardness rules in mempool prevents them from mining an invalid&lt;br/&gt;block on top of a valid tip, but does not ensure the tip is valid).&lt;br/&gt;2) Con: Releasing a flag day without releasing the LOT=true code leading up&lt;br/&gt;to that flag day means that clients would not be fully compatible with an&lt;br/&gt;early activation that could be proposed before the flag day is reached.&lt;br/&gt;E.g., LOT=true is a flag day that retains the possibility of being&lt;br/&gt;compatible with other BIP8 releases without changing software.&lt;br/&gt;3) Pro: BIP-8 is partially in service of &amp;#34;early activation&amp;#34; and . I&amp;#39;m&lt;br/&gt;personally skeptical that early activation is/was ever a good idea. A fixed&lt;br/&gt;activation date may be largely superior for business purposes, software&lt;br/&gt;engineering schedules, etc. I think even with signaling BIP8, it would be&lt;br/&gt;possibly superior to activate rules at a fixed date (or a quantized set of&lt;br/&gt;fixed dates, e.g. guaranteeing at least 3 months but maybe more).&lt;br/&gt;4) Pro: part of the argument for BIP-8=false is that it is possible that&lt;br/&gt;the rule could not activate, if signaling does not occur, providing&lt;br/&gt;additional stopgap against dev collusion and bugs. But BIP-8 can activate&lt;br/&gt;immediately (with start times being proposed 1 month after release?) so we&lt;br/&gt;don&amp;#39;t have certainty around how much time there is for that secondary&lt;br/&gt;review process (read -- I think it isn&amp;#39;t that valuable) and if there *is* a&lt;br/&gt;deadly bug discovered, we might want to hard-fork to fix it even if it&lt;br/&gt;isn&amp;#39;t yet signaled for (e.g., if the rule activates it enables more mining&lt;br/&gt;reward). So I think that it&amp;#39;s a healthier mindset to release a with&lt;br/&gt;definite deadline and not rule out having to do a hard fork if there is a&lt;br/&gt;grave issue (we shouldn&amp;#39;t ever release a SF if we think this is at all&lt;br/&gt;likely, mind you).&lt;br/&gt;5) Con: It&amp;#39;s already taken so long for taproot, the schedule around taproot&lt;br/&gt;was based on the idea it could early activate, 2022 is now too far away. I&lt;br/&gt;don&amp;#39;t know how to defray this other than, if your preferred idea is 1 year&lt;br/&gt;flag day, to do that via LOT=true so that taproot can still have early&lt;br/&gt;activation if desired.&lt;br/&gt;&lt;br/&gt;Overall I agree with the point that all the contention around LOT, makes a&lt;br/&gt;flag day look not so bad. And something closer to a flag day might not be&lt;br/&gt;so bad either for future forks as well.&lt;br/&gt;&lt;br/&gt;However, I think given the appetite for early activation, if a flag day is&lt;br/&gt;desired I think LOT=true is the best option at this time as it allows our&lt;br/&gt;flag day to remain compatible with such an early activation.&lt;br/&gt;&lt;br/&gt;I think we can also clearly communicate that LOT=true for Taproot is not a&lt;br/&gt;precedent setting occurence for any future forks (hold me accountable to&lt;br/&gt;not using this as precedent this should I ever advocate for a SF with&lt;br/&gt;similar release parameters).&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/20210228/5fff5317/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210228/5fff5317/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:29:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9l9r9etns2zkdftwhtdallmv4hqgettx265g0hwg3knk2le0detgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgg33exh</id>
    
      <title type="html">📅 Original date posted:2021-02-23 📝 Original message:Not ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9l9r9etns2zkdftwhtdallmv4hqgettx265g0hwg3knk2le0detgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgg33exh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdkqvdg2jt7hx0nq2ycatepl996waylgrdsc76mjgj43daksajt2qzrnwqc&#39;&gt;nevent1q…nwqc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2021-02-23&lt;br/&gt;📝 Original message:Not responding to anyone in particular, but it strikes me that one can&lt;br/&gt;think about the case where a small minority (let&amp;#39;s say H = 20%?) of nodes&lt;br/&gt;select the opposite of what Core releases (LOT=false, LOT=true). I&amp;#39;m&lt;br/&gt;ignoring the case where a critical bug is discovered in Taproot for reasons&lt;br/&gt;I could expand on if anyone is interested (I don&amp;#39;t think LOT=true/false has&lt;br/&gt;much of a diff in that regard).&lt;br/&gt;&lt;br/&gt;You&amp;#39;ll note an asymmetry with LOT=true / false analysis. LOT=true nodes are&lt;br/&gt;clearly updated (or lying), LOT=false nodes may be un-upgraded (or however&lt;br/&gt;you want to interpret it).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*# 80% on LOT=false, 20% LOT=True*&lt;br/&gt;&lt;br/&gt;- Case 1: Activates ahead of time anyways&lt;br/&gt;&lt;br/&gt;No issues.&lt;br/&gt;&lt;br/&gt;- Case 2: Fails to Activate before timeout...&lt;br/&gt;&lt;br/&gt;20% *may* fork off with LOT=true. Bitcoin hashrate reduced, chance of multi&lt;br/&gt;block reorgs at time of fork relatively high, especially if network does&lt;br/&gt;not partition.&lt;br/&gt;&lt;br/&gt;Implication is that activation % being 90%, then X% fewer than 70% of&lt;br/&gt;miners are signaling for Taproot at this time.  If X% is small the&lt;br/&gt;increased orphan rate caused by the LOT=true miners will cause it to&lt;br/&gt;activate anyways. If X% is larger, then there will be a consensus split.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*# 80% on LOT=true, 20% LOT=False*&lt;br/&gt;- Case 1: Activates ahead of time Anyways&lt;br/&gt;&lt;br/&gt;No issues.&lt;br/&gt;&lt;br/&gt;- Case 2: Fails to Activate before timeout...&lt;br/&gt;&lt;br/&gt;A% &#43; B% &#43; C% = 20%&lt;br/&gt;&lt;br/&gt;A% (upgraded, signal activate) remain on majority chain with LOT=false,&lt;br/&gt;blocks mined universally valid.&lt;br/&gt;&lt;br/&gt;B% (upgraded, not signaling) succeeds in activating and maintaining&lt;br/&gt;consensus, blocks are temporarily lost during the final period, but&lt;br/&gt;consensus re-emerges.&lt;br/&gt;&lt;br/&gt;C% (not upgraded/not signalling) both fail to activate (not upgraded) and&lt;br/&gt;blocks are rejected (not signaling) during mandatory signalling.&lt;br/&gt;Essentially becomes an SPV miner, should still not select transactions&lt;br/&gt;improperly given mempool policy, but may mine a bad tip.&lt;br/&gt;&lt;br/&gt;(I argue that group B is irrational entirely, as in this case the majority&lt;br/&gt;has upgraded, inevitably winning, and is orphaning their blocks so B should&lt;br/&gt;effectively be 0% or can be combined with group C as being somehow not&lt;br/&gt;upgraded if they are unable to switch once it becomes clear after say the&lt;br/&gt;first 100 blocks in the period that LOT &amp;gt; 50%. The only difference in&lt;br/&gt;lumping B with C is that group C SPV mines after the fork and B should, in&lt;br/&gt;theory, have full validation.).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Apologies if my base analysis is off -- happy to take corrections.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;My overall summary is thus:&lt;br/&gt;&lt;br/&gt;1) People care what Core releases because we assume the majority will&lt;br/&gt;likely run it. If core were a minority project, we wouldn&amp;#39;t really care&lt;br/&gt;what core released.&lt;br/&gt;2) People are upset with LOT=true being suggested as release parameters&lt;br/&gt;because of the *narrative* that it puts devs in control.&lt;br/&gt;3) LOT=true having a sizeable minority running it presents major issues to&lt;br/&gt;majority LOT=false in terms of lost blocks during the final period and in&lt;br/&gt;terms of a longer term fork.&lt;br/&gt;4) Majority LOT=true has no long term instability on consensus (majority&lt;br/&gt;LOT=true means the final period always activates, any instability is short&lt;br/&gt;lived &#43; irrational).&lt;br/&gt;5) On the balance, the safer parameter to release *seems* to be LOT=true.&lt;br/&gt;But because devs are sensitive to control narrative, LOT=false is preferred&lt;br/&gt;by devs.&lt;br/&gt;6) Almost paradoxically, choosing a *less safe* option for a narrative&lt;br/&gt;reason is more of a show of dev control than choosing a more safe option&lt;br/&gt;despite appearances.&lt;br/&gt;7) This all comes down to if we think that a reasonable number of important&lt;br/&gt;nodes will run LOT=true.&lt;br/&gt;8) This all doesn&amp;#39;t matter *that much* because taproot will have many&lt;br/&gt;opportunities to activate before the brinksmanship period.&lt;br/&gt;&lt;br/&gt;As a plan of action, I think that means that either:&lt;br/&gt;&lt;br/&gt;A) Core should release LOT=true, as a less disruptive option given stated&lt;br/&gt;community intentions to do LOT=true&lt;br/&gt;B) Core  community should vehemently anti-advocate running LOT=true to&lt;br/&gt;ensure the % is as small as possible&lt;br/&gt;C) Do nothing&lt;br/&gt;D) Core community should release LOT=false and vehemently advocate manually&lt;br/&gt;changing to LOT=true to ensure the % is supermajority, but leaving it as a&lt;br/&gt;user choice.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Overall, I worry that plan B has a mild Streissand effect and would result&lt;br/&gt;in boosting LOT=true (which could be OK, so long as LOT=true &#43;&lt;br/&gt;LOT=false&#43;signal yes becomes the large majority, but would be not fun for&lt;br/&gt;anyone if LOT=true &#43; LOT=false&#43;signal yes are a small majority). Plan C&lt;br/&gt;most likely ends up with some % doing LOT=true anyways. D feels a little&lt;br/&gt;silly, but maybe a good tradeoff.&lt;br/&gt;&lt;br/&gt;If I had to summarize the emotional dynamic among developers around&lt;br/&gt;LOT=true, I think devs wish it didn&amp;#39;t exist because it is clear LOT=true&lt;br/&gt;*creates* the issues here. LOT=false would be fine if the LOT=true strategy&lt;br/&gt;didn&amp;#39;t exist at all. But unfortunately the cat is out of the bag and cannot&lt;br/&gt;be put back in. To validate the emotions, I think it is fine to be angry&lt;br/&gt;about LOT=true and not like it, but we should either accept that it is most&lt;br/&gt;likely to create consensus OR we should find a new game theoretic&lt;br/&gt;activation strategy with better pro-social equilibriums.&lt;br/&gt;&lt;br/&gt;Personally, I think with either plan the ultimate risk of forking is low&lt;br/&gt;given probability to activate before timeout, so we should just pick&lt;br/&gt;something and move on, accepting that we aren&amp;#39;t setting a precedent by&lt;br/&gt;which all future forks should abide. Given my understanding of the&lt;br/&gt;tradeoffs, I believe that the safest choice is LOT=true, but I wouldn&amp;#39;t&lt;br/&gt;move to hold back a plan of LOT=false (but would probably take mitigative&lt;br/&gt;steps on community advocacy if it looks like there is non majority but non&lt;br/&gt;negligible LOT=true uptake).&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;&lt;br/&gt;Jeremy&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/20210222/019548d1/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20210222/019548d1/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:28:59&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyfhhssazchdm27dar5qu369jsjm5cyfpv9nd6cayeuxzwgnycpwszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgpzhczm</id>
    
      <title type="html">📅 Original date posted:2020-09-19 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyfhhssazchdm27dar5qu369jsjm5cyfpv9nd6cayeuxzwgnycpwszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgpzhczm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs285fcuvl0dh2wfzr8clj39r58lu7r25qaeapdm450708vapha34qpzt67c&#39;&gt;nevent1q…t67c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-09-19&lt;br/&gt;📝 Original message:Antoine,&lt;br/&gt;&lt;br/&gt;Yes I think you&amp;#39;re a bit confused on where the actual sponsor vector is. If&lt;br/&gt;you have a transaction chain A-&amp;gt;B-&amp;gt;C and a sponsor S_A, S_A commits to txid&lt;br/&gt;A and A is unaware of S.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;W.r.t your other points, I fully agree that the 1-to-N sponsored case is&lt;br/&gt;very compelling. The consensus rules are clear that sponsor commitments are&lt;br/&gt;non-rival, so there&amp;#39;s no issue with allowing as many sponsors as possible&lt;br/&gt;and including them in aggregate. E.g., if S_A and S&amp;#39;_A both sponsor A with&lt;br/&gt;feerate(S*) &amp;gt; feerate(A), there&amp;#39;s no reason not to include all of them in a&lt;br/&gt;block. The only issue is denial of service in the mempool. In the future,&lt;br/&gt;it would definitely be desirable to figure out rules that allow mempools to&lt;br/&gt;track both multiple sponsors and multiple sponsor targets. But in the&lt;br/&gt;interest of KISS, the current policy rules are designed to be minimally&lt;br/&gt;invasive and maximally functional.&lt;br/&gt;&lt;br/&gt;In terms of location for the sponsor vector, I&amp;#39;m relatively indifferent.&lt;br/&gt;The annex is a possible location, but it&amp;#39;s a bit odd as we really only need&lt;br/&gt;to allow one such vector per tx, not one per input, and one per input would&lt;br/&gt;enable some new use cases (maybe good, maybe bad). Further, being in the&lt;br/&gt;witness space would mean that if two parties create a 2 input transaction&lt;br/&gt;with a desired sponsor vector they would both need to specify it as you&lt;br/&gt;can&amp;#39;t sign another input&amp;#39;s witness data. I wholeheartedly agree with the&lt;br/&gt;sentiment though; there could be a more efficient place to put this data,&lt;br/&gt;but nothing jumps out to me as both efficient and simple in implementation&lt;br/&gt;(a new tx-level field sounds like a lot of complexity).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; n &amp;gt;=1 ? I think you can have at least one vector and this is matching the&lt;br/&gt;code&lt;br/&gt;&lt;br/&gt;yes, this has been fixed in the gist (cred to Dmitry Petukhov for pointing&lt;br/&gt;it out first), but is correct in the code. Thank you for your careful&lt;br/&gt;reading.&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/20200919/109d1531/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200919/109d1531/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:26:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8kqjthjhr4rcgk4qc8auqpt5l74rt5m9lxu8065j2pnmtvz4nykszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tguzxu0u</id>
    
      <title type="html">📅 Original date posted:2020-09-19 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8kqjthjhr4rcgk4qc8auqpt5l74rt5m9lxu8065j2pnmtvz4nykszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tguzxu0u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszy24ktnk5w3pjr6t8c5lcexkyxla2p33efjrqlmuwtdtelh9d8qcz2553l&#39;&gt;nevent1q…553l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-09-19&lt;br/&gt;📝 Original message:Hi David!&lt;br/&gt;&lt;br/&gt;Thanks for taking a look, and great question.&lt;br/&gt;&lt;br/&gt;&amp;gt; Is this in the reference implementation?&lt;br/&gt;&lt;br/&gt;It is indeed in the reference implementation. Please see&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/compare/master...JeremyRubin:subsidy-tx#diff-24efdb00bfbe56b140fb006b562cc70bR741-R743&#34;&gt;https://github.com/bitcoin/bitcoin/compare/master...JeremyRubin:subsidy-tx#diff-24efdb00bfbe56b140fb006b562cc70bR741-R743&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;There is no requirement that there be any input in common, just that the&lt;br/&gt;sponsor vectors are identical (keep in mind that we limit our sponsor&lt;br/&gt;vector by policy to 1 element, because, as you rightfully point out,&lt;br/&gt;multiple sponsors is more complex to implement).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; In the second case, I think Mallory can use an existing pinning&lt;br/&gt;&amp;gt; technique to make it expensive for Bob to fee bump.  The normal&lt;br/&gt;&amp;gt; replacement policies require a replacement to pay an absolute higher fee&lt;br/&gt;&amp;gt; than the original transaction, so Mallory can create a 100,000 vbyte&lt;br/&gt;&amp;gt; transaction with a single-vector sponsor at the end pointing to Bob&amp;#39;s&lt;br/&gt;&amp;gt; transaction.  This sponsor transaction pays the same feerate as Bob&amp;#39;s&lt;br/&gt;&amp;gt; transaction---let&amp;#39;s say 50 nBTC/vbyte, so 5 mBTC total fee.  In order&lt;br/&gt;&amp;gt; for Bob to replace Mallory&amp;#39;s sponsor transaction with his own sponsor&lt;br/&gt;&amp;gt; transaction, Bob needs to pay the incremental relay feerate (10&lt;br/&gt;&amp;gt; nBTC/vbyte) more, so 6 mBTC total ($66 at $11k/BTC).&lt;br/&gt;&lt;br/&gt;Yup, I was aware of this limitation but I&amp;#39;m not sure how practical it is as&lt;br/&gt;an attack because it&amp;#39;s quite expensive for the attacker. But there are a&lt;br/&gt;few simple policies that can eliminate it:&lt;br/&gt;&lt;br/&gt;1) A Sponsoring TX never needs to be more than, say, 2 inputs and 2&lt;br/&gt;outputs. Restricting this via policy would help, or more flexibly limiting&lt;br/&gt;the total size of a sponsoring paying transaction to 1000 bytes.&lt;br/&gt;2) Make A Sponsoring TX not need to pay more absolute fee, just needs to&lt;br/&gt;increase the feerate (perhaps with a constant relay fee bump to prevent&lt;br/&gt;spam).&lt;br/&gt;&lt;br/&gt;I think 1) is simpler and should allow full use of the sponsor mechanism&lt;br/&gt;while preventing this class of issue mostly.&lt;br/&gt;&lt;br/&gt;What do you think?&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/20200919/f57991f4/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200919/f57991f4/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:26:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqseq745ulccartz70aekf5ayp0rjyx9nw4c4qksj9agg7mshgglgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg0v395a</id>
    
      <title type="html">📅 Original date posted:2020-09-19 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqseq745ulccartz70aekf5ayp0rjyx9nw4c4qksj9agg7mshgglgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg0v395a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd8j875hnzefgdja7f65mt60s779pst8lhj9wdx8nxp02pudgypuscld3tk&#39;&gt;nevent1q…d3tk&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-09-19&lt;br/&gt;📝 Original message:Hi Cory!&lt;br/&gt;&lt;br/&gt;Thanks for taking a look. CC nopara as I think your questions are the same.&lt;br/&gt;&lt;br/&gt;I think there are a few reason we won&amp;#39;t see functionally worse privacy:&lt;br/&gt;&lt;br/&gt;1. RBF/CPFP may require the use of an external to the original transaction&lt;br/&gt;to pay sufficient fee.&lt;br/&gt;2. RBF/CPFP may leak which address was the change and which was the payment.&lt;br/&gt;&lt;br/&gt;In addition, I think there is a benefit in that:&lt;br/&gt;&lt;br/&gt;1. RBF/CPFP requires access to the keys in the same &amp;#39;security zone&amp;#39; as the&lt;br/&gt;payment you made (e.g., if it&amp;#39;s a multi-sig to multi-sig requires m of N to&lt;br/&gt;cpfp/or RBF, whereas sponsors could be anyone).&lt;br/&gt;2. Sponsors can be a fully separate arbitrary wallet.&lt;br/&gt;3. You can continually coinjoin the funds in your fee-paying wallet without&lt;br/&gt;tainting your main funds.&lt;br/&gt;4. You can keep those funds in a lightning channel and pay your fees via&lt;br/&gt;loop outs.&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/20200919/d5b8bdac/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200919/d5b8bdac/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:26:54&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs946zj8qkknztk8ycrghqae496g2s8vgqn6n4a8v08xxyureetw3qzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg7xkt66</id>
    
      <title type="html">📅 Original date posted:2020-08-16 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs946zj8qkknztk8ycrghqae496g2s8vgqn6n4a8v08xxyureetw3qzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg7xkt66" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfvydxgkra7ampx52psayp3cqcvmf327aq4fvcw29uv3dcvcp9g4cy0etjz&#39;&gt;nevent1q…etjz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-08-16&lt;br/&gt;📝 Original message:Concept ack!&lt;br/&gt;&lt;br/&gt;It might be nice to include a few negotiation utility functions either in&lt;br/&gt;this bip or at the same time in a separate bip. An example we might want to&lt;br/&gt;include is a &amp;#34;polite disconnect&amp;#34;, whereby a node can register that you&lt;br/&gt;don&amp;#39;t want to connect in the future due to incompatibility.&lt;br/&gt;&lt;br/&gt;It also might be nice to standardize some naming convention or negotiation&lt;br/&gt;message type so that we don&amp;#39;t end up with different negotiation systems.&lt;br/&gt;Then we can also limit the bip so that we&amp;#39;re only defining negotiation&lt;br/&gt;message types as ignorable v.s. some other message type (which can also be&lt;br/&gt;ignored, but maybe we want to do something else in the future).&lt;br/&gt;&lt;br/&gt;This also makes it easier for old (but newer than this bip) nodes to apply&lt;br/&gt;some generic rules around reporting/rejecting/responding to unknown feature&lt;br/&gt;negotiation v.s. an untagged message which might be a negotiation or&lt;br/&gt;something else.&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/20200816/6fb078d1/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200816/6fb078d1/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:26:23&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx00cc0gfsn4mc5ul5rrmmd7ghx77etvpdnspl0k9yf64d5lpwqhczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgd5xraq</id>
    
      <title type="html">📅 Original date posted:2020-06-08 📝 Original message:Broke ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx00cc0gfsn4mc5ul5rrmmd7ghx77etvpdnspl0k9yf64d5lpwqhczyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgd5xraq" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs28x24fu99almn2rl2ruq54tuwlkpt705ew33xxarflytc7xfq37ggfd4y5&#39;&gt;nevent1q…d4y5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-06-08&lt;br/&gt;📝 Original message:Broke out to a separate thread.&lt;br/&gt;&lt;br/&gt;At core, the reason why this method *might* work is that it&amp;#39;s essentially&lt;br/&gt;just CPFP but we can guarantee that the link we&amp;#39;re examining is always&lt;br/&gt;exactly one hop away, so we get rid of most of the CPFP graph traversal&lt;br/&gt;issues.&lt;br/&gt;&lt;br/&gt;Your description largely matches my thinking for how something like this&lt;br/&gt;could work (pay for neighbor). The issue is that the extant CPFP logic is&lt;br/&gt;somewhat brittle and doesn&amp;#39;t work as expected (Child not Children, which is&lt;br/&gt;problematic for multiple PFN&amp;#39;s).&lt;br/&gt;&lt;br/&gt;&amp;gt; PFN transaction would still be valid if some of &amp;#39;ghost parents&amp;#39; are&lt;br/&gt;already confirmed, so the miners could have more fees than strictly&lt;br/&gt;necessary. But this is the same as with CPFP.&lt;br/&gt;&lt;br/&gt;This is problematic and can&amp;#39;t be done as it requires a new index of all&lt;br/&gt;past txns for consensus.&lt;br/&gt;&lt;br/&gt;My thinking is that a Fee Bump transaction can name a list of TXIDs (Or one&lt;br/&gt;TXID which implies all ancestors of) that it wishes to be included in a&lt;br/&gt;block with. It must be included in that block. A Fee Bump transaction may&lt;br/&gt;have no unconfirmed ancestors nor any children. Potentially, it also may&lt;br/&gt;not be RBF&amp;#39;d. You treat the Fee Bump Transactions as the lowest descendant&lt;br/&gt;of whatever it targets and then set it&amp;#39;s feerate/total fee based on the&lt;br/&gt;package that would have to co-confirm for it to be worth mining. This makes&lt;br/&gt;it sort like normal transactions for inclusion. You can require some&lt;br/&gt;minimums for mempool inclusion at all.&lt;br/&gt;&lt;br/&gt;If it&amp;#39;s target is confirmed or replaced, it should drop from the mempool.&lt;br/&gt;&lt;br/&gt;Transactions in the mempool may set a flag that opts out of CPFP for&lt;br/&gt;descendants/blocks any descendants. Channel protocols should set this bit&lt;br/&gt;to prevent pinning, and then use the Fee Bump to add fees to whatever txns&lt;br/&gt;need to go through. If done right you can also layer a coinswap protocol&lt;br/&gt;with the fee-bumping txns change so that you are getting a privacy benefit&lt;br/&gt;at the same time.&lt;br/&gt;&lt;br/&gt;BTW the annex *could* be used for this purpose, but it would also be&lt;br/&gt;acceptable to have it be in some kind of anyone can spend output. Then it&lt;br/&gt;would just be a anyone-can-spend tx with OP_CHECK_TXID_IN_BLOCK (or&lt;br/&gt;OP_CHECK_UTXO_SPENT_IN_BLOCK), and a miner could claim all such outputs at&lt;br/&gt;the end of the block. This is worse in terms of on-chain overheads, but&lt;br/&gt;nice in that it&amp;#39;s the minimal semantic change &amp;amp; introduces some general&lt;br/&gt;purpose functionality.&lt;br/&gt;&lt;br/&gt;But my thoughts are still pretty loose at the moment around it. I suspect&lt;br/&gt;that to make fee bumping work nicely would require removing CPFP entirely,&lt;br/&gt;but I don&amp;#39;t know that to be the case concretely.&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sun, Jun 7, 2020 at 11:02 PM Dmitry Petukhov &amp;lt;dp at simplexum.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; В Sun, 7 Jun 2020 15:45:16 -0700&lt;br/&gt;&amp;gt; Jeremy 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; What I think we&amp;#39;ll eventually land on is a way of doing a tx&lt;br/&gt;&amp;gt; &amp;gt; that contributes fee to another tx chain as a passive observer to&lt;br/&gt;&amp;gt; &amp;gt; them. While this breaks one abstraction around how dependencies&lt;br/&gt;&amp;gt; &amp;gt; between transactions are processed, it also could help resolve some&lt;br/&gt;&amp;gt; &amp;gt; really difficult challenges we face with application-DoS (pinning and&lt;br/&gt;&amp;gt; &amp;gt; other attacks) in the mempool beyond CTV. I have a napkin design for&lt;br/&gt;&amp;gt; &amp;gt; how this could work, but nothing quite ready to share yet.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I had an idea of &amp;#39;Pay for neighbor&amp;#39; transaction where a transaction&lt;br/&gt;&amp;gt; that is not directly a child of some other transaction can specify that&lt;br/&gt;&amp;gt; it wants to pay the fee for that other transaction(s). It can become&lt;br/&gt;&amp;gt; like &amp;#39;ghost child&amp;#39; transaction for them, in what it cannot be mined&lt;br/&gt;&amp;gt; unless its &amp;#39;ghost parents&amp;#39; are confirmed, too. It will be like CPFP,&lt;br/&gt;&amp;gt; but without direct dependency via inputs. Such &amp;#39;PFN&amp;#39; transaction would&lt;br/&gt;&amp;gt; not spend any coins beside what it specifies in its own inputs, of&lt;br/&gt;&amp;gt; course.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The idea required a hardfork at first, but Anthony Towns suggested&lt;br/&gt;&amp;gt; a way to make it into a soft fork (past-taproot) by putting the txids of&lt;br/&gt;&amp;gt; &amp;#39;ghost parents&amp;#39; into taproot annex.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; PFN transaction would still be valid if some of &amp;#39;ghost parents&amp;#39; are&lt;br/&gt;&amp;gt; already confirmed, so the miners could have more fees than strictly&lt;br/&gt;&amp;gt; necessary. But this is the same as with CPFP.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Looking at the mempool code, it seems that only a way how parent/child&lt;br/&gt;&amp;gt; transactions relationships are established will need to be adjusted to&lt;br/&gt;&amp;gt; account for this &amp;#39;ghost relationships&amp;#39;, and once established, other&lt;br/&gt;&amp;gt; logic will work as with CPFP. There could be complications regarding&lt;br/&gt;&amp;gt; transaction package size. But I cannot claim that I understand that&lt;br/&gt;&amp;gt; code enough to say something about this with certainty.&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/20200607/520bf867/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200607/520bf867/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:25:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqz6lx24g5taewrh6dyhjwjxjakwzdm7wmwpawh802tevh93az73czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgj2crhw</id>
    
      <title type="html">📅 Original date posted:2020-06-07 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqz6lx24g5taewrh6dyhjwjxjakwzdm7wmwpawh802tevh93az73czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgj2crhw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9cjl8wr54yh24kjt4p8axu4zeuc2m6jyxxq95kdwfej4t6ph8x9guyplrc&#39;&gt;nevent1q…plrc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-06-07&lt;br/&gt;📝 Original message:Hi Joachim,&lt;br/&gt;&lt;br/&gt;Fantastic questions!&lt;br/&gt;&lt;br/&gt;I think it makes sense to think about it in terms of today, and then in&lt;br/&gt;terms of a long-dated future where wallets have much richer native&lt;br/&gt;understandings of these things. This helps preserve the purity of the&lt;br/&gt;arguments I&amp;#39;m making with respect to what it would look like today v.s.&lt;br/&gt;what it could look like with strong integration.&lt;br/&gt;&lt;br/&gt;Today:&lt;br/&gt;1) I would expect that exchanges do this as a CTV txn that is one initial&lt;br/&gt;confirmation to a single output, and then that output expands to either all&lt;br/&gt;the payments in the batch, or to a histogram of single-layer CTVs based on&lt;br/&gt;priority/amount being spent. E.g, either A -&amp;gt; B -&amp;gt; {C,D,E,F,G...} or&lt;br/&gt;A-&amp;gt;B-&amp;gt;{C -&amp;gt; {D,E,F}, G -&amp;gt; {H, I J}, K -&amp;gt; ....}. I would further expect that&lt;br/&gt;the entire tree would include fees such that it will get into at least the&lt;br/&gt;bottom of the mempool. See &lt;a href=&#34;https://utxos.org/analysis/batching_sim/&#34;&gt;https://utxos.org/analysis/batching_sim/&lt;/a&gt; for&lt;br/&gt;more info. If txns land in the mempool, then users learn about it (even&lt;br/&gt;with an un-updated wallet) just like the learn of normal unconfirmed&lt;br/&gt;transactions. Even this simple two-step transaction can deliver massive&lt;br/&gt;batching savings. OpTech has some coverage of this simple&lt;br/&gt;commit-now-distribute-later scheme here&lt;br/&gt;&lt;a href=&#34;https://bitcoinops.org/en/newsletters/2019/05/29/#proposed-new-opcode-for-transaction-output-commitments&#34;&gt;https://bitcoinops.org/en/newsletters/2019/05/29/#proposed-new-opcode-for-transaction-output-commitments&lt;/a&gt;&lt;br/&gt;.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d also expect that exchanges in particular already store their outbound&lt;br/&gt;transactions in resilient storage (for audit and compliance as well as&lt;br/&gt;liability protection), so they would likely be able to make this data&lt;br/&gt;available to their customers on inquiry if discarded.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m all for redundancy, so exchanges can also e.g. send an email with a&lt;br/&gt;backup file if they want to. But that&amp;#39;s not necessary for it to work today,&lt;br/&gt;you can just watch the mempool like wallets already do.&lt;br/&gt;&lt;br/&gt;A slightly patched wallet can treat CTV outs as more confirmed (e.g., like&lt;br/&gt;an own-change address) than a normal unconfirmed out.&lt;br/&gt;&lt;br/&gt;2) I would expect that exchanges pay a reasonable amount of fees for the&lt;br/&gt;transaction so it can expect to at least get to the bottom range of the&lt;br/&gt;mempool for children, and top of the mempool for the parent. Your question&lt;br/&gt;seems to be more about after this phase.&lt;br/&gt;&lt;br/&gt;First I would note that it is truly O(log(N)), but E[O(1)], because it&lt;br/&gt;amortizes. That is, to claim out all of the outputs is a total overhead of&lt;br/&gt;O(N), not O(N log N). Fees in this model are paid by CPFP. Because CPFP is&lt;br/&gt;currently *Child* pays for parent and not *Children* pay for parent, we&lt;br/&gt;don&amp;#39;t (unfortunately) have rational txn selection for this case. Any wallet&lt;br/&gt;can construct this spend path by rebroadcasting (if evicted) the parents&lt;br/&gt;and spending the txn. The exchange can also &amp;#39;bound&amp;#39; themselves to seeing a&lt;br/&gt;transaction to completion by including some change address at the leaf node&lt;br/&gt;layer (not much overhead depending on radix).&lt;br/&gt;&lt;br/&gt;Thus the payer of fees is the person who needs to spend.&lt;br/&gt;&lt;br/&gt;3) Not exactly, the middle txns are immutable. but it may be possible to&lt;br/&gt;construct a low-fee longchain which can cause transaction pinning. If you&lt;br/&gt;do a shallow tree as described in (1), the current lightning carve should&lt;br/&gt;help to prevent this.&lt;br/&gt;&lt;br/&gt;Future:&lt;br/&gt;1) Most likely the desirable radix for a tree is something like 4 or 5&lt;br/&gt;which minimizes the amount of work on an individual basis (you can compute&lt;br/&gt;this by figuring out how deep the tree would be and the per-tx overheads, 4&lt;br/&gt;or 5 pop out as being minimal overhead and the benefit is recursive).&lt;br/&gt;Mempool broadcast still should work, but it&amp;#39;s possible that for privacy&lt;br/&gt;reasons it&amp;#39;s preferred to not broadcast through mempool. It&amp;#39;s also possible&lt;br/&gt;that all payouts are into non-interactive lightning channels with N-of-N&lt;br/&gt;taproot at each layer, so you receive a proof through your lightning wallet&lt;br/&gt;and can immediately route payments, and when you want to close&lt;br/&gt;opportunistically cooperate to reduce chain overhead. You can think of CTV&lt;br/&gt;as an anchor for bootstrapping these layer two protocols with an on-chain&lt;br/&gt;bisection algorithm to discover online participants to re-negotiate with. A&lt;br/&gt;privacy and scalability win!&lt;br/&gt;&lt;br/&gt;I further expect business wallets (like exchanges) to be able to credit&lt;br/&gt;deposits from CTV trees without requiring full expansion. This is also a&lt;br/&gt;privacy win, and can decrease latency of moving large value funds (e.g.,&lt;br/&gt;exceeding inter exchange channel balances) and crediting funds for trading.&lt;br/&gt;&lt;br/&gt;2) I think we&amp;#39;ll eventually converge on a non-destructive way of adding&lt;br/&gt;fees. RBF is destructive in that you&amp;#39;re replacing a TX. CPFP is destructive&lt;br/&gt;in that you have a spend a coin to drive progress. Without a new opcode you&lt;br/&gt;can emulate this with CTV by at nodes in the tree having a consumable&lt;br/&gt;output that serves as a CPFP hook/a RBF hook. You can see some discussion&lt;br/&gt;here (animated, so use pres mode)&lt;br/&gt;&lt;a href=&#34;https://docs.google.com/presentation/d/1XDiZOz52XyJc4LDSbiD9_JAaJobyF5QDGtR3O9qD7yg/edit#slide=id.g7d267915e2_0_44&#34;&gt;https://docs.google.com/presentation/d/1XDiZOz52XyJc4LDSbiD9_JAaJobyF5QDGtR3O9qD7yg/edit#slide=id.g7d267915e2_0_44&lt;/a&gt;.&lt;br/&gt;This adds some extra chain weight, but is possible without further&lt;br/&gt;extension. What I think we&amp;#39;ll eventually land on is a way of doing a tx&lt;br/&gt;that contributes fee to another tx chain as a passive observer to them.&lt;br/&gt;While this breaks one abstraction around how dependencies between&lt;br/&gt;transactions are processed, it also could help resolve some really&lt;br/&gt;difficult challenges we face with application-DoS (pinning and other&lt;br/&gt;attacks) in the mempool beyond CTV. I have a napkin design for how this&lt;br/&gt;could work, but nothing quite ready to share yet.&lt;br/&gt;&lt;br/&gt;3) Hopefully 2 solves pinning :)&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Sun, Jun 7, 2020 at 9:51 AM Joachim Strömbergson &amp;lt;&lt;br/&gt;joachimstr at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hello everyone,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; regarding OP_CTV, I am considering the scaling use case, specifically an&lt;br/&gt;&amp;gt; exchange (or similar) who wants to batch pay to OP_CTV to many users, and I&lt;br/&gt;&amp;gt; wonder&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) How do you expect the exchange to communicate the proof of the payment&lt;br/&gt;&amp;gt; to the user wallets such that they are able to construct the follow up&lt;br/&gt;&amp;gt; transactions and accept the payment. This is UI question. Do you expect&lt;br/&gt;&amp;gt; exchanges to provide a certain importable file/blob that the wallet will&lt;br/&gt;&amp;gt; allow you to entry?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 2) Who pays the fees and how for the transaction within the structure that&lt;br/&gt;&amp;gt; OP_CTVed output is committed to? Say there is a tree structure and I want&lt;br/&gt;&amp;gt; to get the coin out. Someone needs to send log(N) transactions to the chain&lt;br/&gt;&amp;gt; in order for me to get access to the final UTXO I am interested in. Who can&lt;br/&gt;&amp;gt; construct such transaction path and what do they need for it and who pays&lt;br/&gt;&amp;gt; fees on that (which input)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 3) Depending on 2) above, is it not possible for a malicious entity who is&lt;br/&gt;&amp;gt; among the many users being paid, but who has very small UTXO there relative&lt;br/&gt;&amp;gt; to others, to construct this middle transaction and use a very small fee&lt;br/&gt;&amp;gt; rate in order to DoS other participants. Is it even possible for this&lt;br/&gt;&amp;gt; attacker to create the middle transaction with RBF disabled?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thank you,&lt;br/&gt;&amp;gt; Joachim&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sent with ProtonMail &amp;lt;&lt;a href=&#34;https://protonmail.com&amp;gt&#34;&gt;https://protonmail.com&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, November 26, 2019 1:50 AM, Jeremy 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; Bitcoin Developers,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Pleased to announce refinements to the BIP draft for&lt;br/&gt;&amp;gt; OP_CHECKTEMPLATEVERIFY (replaces previous OP_SECURETHEBAG BIP). Primarily:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) Changed the name to something more fitting and acceptable to the&lt;br/&gt;&amp;gt; community&lt;br/&gt;&amp;gt; 2) Changed the opcode specification to use the argument off of the stack&lt;br/&gt;&amp;gt; with a primitive constexpr/literal tracker rather than script lookahead&lt;br/&gt;&amp;gt; 3) Permits future soft-fork updates to loosen or remove &amp;#34;constexpr&amp;#34;&lt;br/&gt;&amp;gt; restrictions&lt;br/&gt;&amp;gt; 4) More detailed comparison to alternatives in the BIP, and why&lt;br/&gt;&amp;gt; OP_CHECKTEMPLATEVERIFY should be favored even if a future technique may&lt;br/&gt;&amp;gt; make it semi-redundant.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Please see:&lt;br/&gt;&amp;gt; BIP: &lt;a href=&#34;https://github.com/JeremyRubin/bips/blob/ctv/bip-ctv.mediawiki&#34;&gt;https://github.com/JeremyRubin/bips/blob/ctv/bip-ctv.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; Reference Implementation:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify&#34;&gt;https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I believe this addresses all outstanding feedback on the design of this&lt;br/&gt;&amp;gt; opcode, unless there are any new concerns with these changes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m also planning to host a review workshop in Q1 2020, most likely in San&lt;br/&gt;&amp;gt; Francisco. Please fill out the form here&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://forms.gle/pkevHNj2pXH9MGee9&#34;&gt;https://forms.gle/pkevHNj2pXH9MGee9&lt;/a&gt; if you&amp;#39;re interested in participating&lt;br/&gt;&amp;gt; (even if you can&amp;#39;t physically attend).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And as a &amp;#34;but wait, there&amp;#39;s more&amp;#34;:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1) RPC functions are under preliminary development, to aid in testing and&lt;br/&gt;&amp;gt; evaluation of OP_CHECKTEMPLATEVERIFY. The new command `sendmanycompacted`&lt;br/&gt;&amp;gt; shows one way to use OP_CHECKTEMPLATEVERIFY. See:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify-rpcs&#34;&gt;https://github.com/JeremyRubin/bitcoin/tree/checktemplateverify-rpcs&lt;/a&gt;.&lt;br/&gt;&amp;gt; `sendmanycompacted` is still under early design. Standard practices for&lt;br/&gt;&amp;gt; using OP_CHECKTEMPLATEVERIFY &amp;amp; wallet behaviors may be codified into a&lt;br/&gt;&amp;gt; separate BIP. This work generalizes even if an alternative strategy is used&lt;br/&gt;&amp;gt; to achieve the scalability techniques of OP_CHECKTEMPLATEVERIFY.&lt;br/&gt;&amp;gt; 2) Also under development are improvements to the mempool which will, in&lt;br/&gt;&amp;gt; conjunction with improvements like package relay, help make it safe to lift&lt;br/&gt;&amp;gt; some of the mempool&amp;#39;s restrictions on longchains specifically for&lt;br/&gt;&amp;gt; OP_CHECKTEMPLATEVERIFY output trees. See: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/17268&#34;&gt;https://github.com/bitcoin/bitcoin/pull/17268&lt;/a&gt;&lt;br/&gt;&amp;gt; This work offers an improvement irrespective of OP_CHECKTEMPLATEVERIFY&amp;#39;s&lt;br/&gt;&amp;gt; fate.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Neither of these are blockers for proceeding with the BIP, as they are&lt;br/&gt;&amp;gt; ergonomics and usability improvements needed once/if the BIP is activated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; See prior mailing list discussions here:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-May/016934.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-May/016934.html&lt;/a&gt;&lt;br/&gt;&amp;gt; *&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-June/016997.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-June/016997.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks to the many developers who have provided feedback on iterations of&lt;br/&gt;&amp;gt; this design.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Jeremy&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; @JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&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/20200607/6a0f0136/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200607/6a0f0136/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:25:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrusjlqydhnv5q623429g5z8j6t297er7dylqf9uc6kfm08yyhykgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgd33qk0</id>
    
      <title type="html">📅 Original date posted:2020-02-14 📝 Original message:Dave, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrusjlqydhnv5q623429g5z8j6t297er7dylqf9uc6kfm08yyhykgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgd33qk0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq7et59k5khf5dpgtu9npvyql3m5vf2wkfc7uvyj0fm34luxget8cvntxsc&#39;&gt;nevent1q…txsc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2020-02-14&lt;br/&gt;📝 Original message:Dave,&lt;br/&gt;&lt;br/&gt;I think your point:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*When schnorr and taproot are done together, all of the following&lt;br/&gt;transaction types can be part of the same set:     - single-sig spends&lt;br/&gt;(similar to current use of P2PKH and P2WPKH)     - n-of-n spends with musig&lt;br/&gt;or equivalent (similar to current use of       P2SH and P2WSH 2-of-2&lt;br/&gt;multisig without special features as used by       Blockstream Green and LN&lt;br/&gt;mutual closes)     - k-of-n (for low values of n) using the most common k&lt;br/&gt;signers       (similar to BitGo-style 2-of-3 where the keys involved are&lt;br/&gt;    alice_hot, alice_cold, and bob_hot and almost all transactions are&lt;br/&gt;  expected to be signed by {alice_hot, bob_hot}; that common case       can&lt;br/&gt;be the key-path spend and the alternatives {alice_hot,       alice_cold}&lt;br/&gt;and {alice_cold, bob_hot} can be script-path spends)     - contract&lt;br/&gt;protocols that can sometimes result in all parties       agreeing on an&lt;br/&gt;outcome (similar to LN mutual closes, cross-chain       atomic swaps, and&lt;br/&gt;same-chain coinswaps) *&lt;br/&gt;&lt;br/&gt;Is the same if Schnorr &#43; Merkle Branch without Taproot optimization, unless&lt;br/&gt;I&amp;#39;m missing something in one of the cases? I guess there&amp;#39;s a distinction on&lt;br/&gt;&amp;#34;can&amp;#34; v.s. &amp;#34;are likely&amp;#34;?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Jonas,&lt;br/&gt;&lt;br/&gt;That&amp;#39;s a really interesting point about K-N systems making the most likely&lt;br/&gt;K-K the taproot key. (For the uninitiated, MuSig can do N-of-N aggregation&lt;br/&gt;non-interactively, but K-of-N requires interaction). I think this works&lt;br/&gt;with small (N choose K), but as (N choose K) increases it seems the&lt;br/&gt;probability of picking the correct one goes down?&lt;br/&gt;&lt;br/&gt;I guess the critical question is if cases where there&amp;#39;s not some timelock&lt;br/&gt;will be mandatory across all signing paths.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;cheers,&lt;br/&gt;&lt;br/&gt;jeremy&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Feb 10, 2020 at 9:16 AM Jonas Nick 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 agree with most of the comments so far, but the group brings up an often&lt;br/&gt;&amp;gt; overlooked point with respect to the privacy benefits of taproot. In the&lt;br/&gt;&amp;gt; extreme&lt;br/&gt;&amp;gt; case, if there would be no policies that have both a key and a script spend&lt;br/&gt;&amp;gt; path, then taproot does not improve anonymity sets compared to the &amp;#34;Taproot&lt;br/&gt;&amp;gt; Public NUMS Optimization&amp;#34; proposal (which saves 8 vbytes in a&lt;br/&gt;&amp;gt; script-spend). (*)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In fact, the cases where scripts would have to be used given usage of&lt;br/&gt;&amp;gt; Bitcoin&lt;br/&gt;&amp;gt; today are be rare because threshold policies, their conjunctions and&lt;br/&gt;&amp;gt; disjunctions can be expressed with a single public key. Even if we&lt;br/&gt;&amp;gt; disregard&lt;br/&gt;&amp;gt; speculation that timelocks, ANYPREVOUT/NOINPUT and other interesting&lt;br/&gt;&amp;gt; scripts&lt;br/&gt;&amp;gt; will be used in the future (which can be added through the leaf or key&lt;br/&gt;&amp;gt; versions&lt;br/&gt;&amp;gt; without affecting key-spend anonymity sets), not all of today&amp;#39;s&lt;br/&gt;&amp;gt; applications are&lt;br/&gt;&amp;gt; able to be represented single public keys because there are applications&lt;br/&gt;&amp;gt; that&lt;br/&gt;&amp;gt; can not deal with interactive key setups or interactive signing. For&lt;br/&gt;&amp;gt; applications where this is possible it will be a gradual change because of&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; engineering challenges involved. For example, k-of-n threshold policies&lt;br/&gt;&amp;gt; could&lt;br/&gt;&amp;gt; have the most likely k-of-k in the taproot output key and other k-of-k in&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; leaves, instead of going for a k-of-n taproot output key immediately.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Given that anonymity sets in Bitcoin are permanent and software tends to be&lt;br/&gt;&amp;gt; deployed longer than anyone would expect at the time of deployment,&lt;br/&gt;&amp;gt; realistically Taproot is superior to the &amp;#34;Public NUMS Optimization&amp;#34; and &amp;#34;An&lt;br/&gt;&amp;gt; Alternative Deployment Path&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (*) One could argue that the little plausible deniability gained by a very&lt;br/&gt;&amp;gt; small&lt;br/&gt;&amp;gt; probability of the change of a script-spend being a key-spend and vice&lt;br/&gt;&amp;gt; versa is&lt;br/&gt;&amp;gt; significantly better than no probability at all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On 2/9/20 8:47 PM, Bryan Bishop via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Apologies for my previous attempt at relaying the message- it looks like&lt;br/&gt;&amp;gt; &amp;gt; the emails got mangled on the archive. I am re-sending them in this&lt;br/&gt;&amp;gt; &amp;gt; combined email with what I hope will be better formatting. Again this is&lt;br/&gt;&amp;gt; &amp;gt; from some nym that had trouble posting to this mailing list; I didn&amp;#39;t see&lt;br/&gt;&amp;gt; &amp;gt; any emails in the queue so I couldn&amp;#39;t help to publish this sooner.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; SUBJECT: Taproot (and Graftroot) Complexity&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This email is the first of a collection of sentiments from a group of&lt;br/&gt;&amp;gt; &amp;gt; developers who in aggregate prefer to remain anonymous. These emails have&lt;br/&gt;&amp;gt; &amp;gt; been sent under a pseudonym so as to keep the focus of discussion on the&lt;br/&gt;&amp;gt; &amp;gt; merits of the technical issues, rather than miring the discussion in&lt;br/&gt;&amp;gt; &amp;gt; personal politics.  Our goal isn&amp;#39;t to cause a schism, but rather to help&lt;br/&gt;&amp;gt; &amp;gt; figure out what the path forward is with Taproot. To that end, we:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1) Discuss the merits of Taproot&amp;#39;s design versus simpler alternatives&lt;br/&gt;&amp;gt; (see&lt;br/&gt;&amp;gt; &amp;gt; thread subject, &amp;#34;Taproot (and Graftroot) Complexity&amp;#34;).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2) Propose an alternative path to deploying the technologies described in&lt;br/&gt;&amp;gt; &amp;gt; BIP-340, BIP-341, and BIP-342 (see thread subject, &amp;#34;An Alternative&lt;br/&gt;&amp;gt; &amp;gt; Deployment Path for Taproot Technologies&amp;#34;).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 3) Suggest a modification to Taproot to reduce some of the overhead (see&lt;br/&gt;&amp;gt; &amp;gt; thread subject, &amp;#34;Taproot Public NUMS Optimization&amp;#34;).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Now that the BIP has moved to draft we felt that now was the time to&lt;br/&gt;&amp;gt; &amp;gt; prioritize review to make sure it was an acceptable change for our&lt;br/&gt;&amp;gt; &amp;gt; activities. As a group, we&amp;#39;re excited about the totality of what Taproot&lt;br/&gt;&amp;gt; &amp;gt; has to offer. However, after our review, we&amp;#39;re left perplexed about the&lt;br/&gt;&amp;gt; &amp;gt; development of Taproot (and Graftroot, to a lesser extent).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; We also want to convey that we have nothing but respect for the&lt;br/&gt;&amp;gt; developers&lt;br/&gt;&amp;gt; &amp;gt; and community who have poured their heart and soul into preparing&lt;br/&gt;&amp;gt; Taproot.&lt;br/&gt;&amp;gt; &amp;gt; Self evidently, it is an impressive synthesis of ideas. We believe that&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt; highest form of respect to pay such a synthesis of ideas is a detailed&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; critical review, as it&amp;#39;s pertinent to closely consider changes to&lt;br/&gt;&amp;gt; Bitcoin.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; In essence, Taproot is fundamentally the same as doing&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0114.mediawiki&lt;/a&gt; and&lt;br/&gt;&amp;gt; Schnorr&lt;br/&gt;&amp;gt; &amp;gt; signatures separately.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The main reason for putting them together -- as mentioned in the BIP --&lt;br/&gt;&amp;gt; is&lt;br/&gt;&amp;gt; &amp;gt; a gain in efficiency. But this efficiency pre-supposes a specific use&lt;br/&gt;&amp;gt; case&lt;br/&gt;&amp;gt; &amp;gt; and probability distribution of use cases.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Compare:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Suppose a MAST for {a,b,c,d,e,f,g,h} spending conditions it looks&lt;br/&gt;&amp;gt; something&lt;br/&gt;&amp;gt; &amp;gt; like this:&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;     /    \&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; a b c d e f g h&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If we want this to be functionally equivalent to Taproot, we add a new&lt;br/&gt;&amp;gt; path:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;        /\&lt;br/&gt;&amp;gt; &amp;gt;       /\ {&amp;lt;pk&amp;gt; schnorr_checksig}&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;  /  \    /  \&lt;br/&gt;&amp;gt; &amp;gt; /\  /\  /\  /\&lt;br/&gt;&amp;gt; &amp;gt; a b c d e f g h&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Now, to spend from this MBV you have to reveal 32 bytes on the stack for&lt;br/&gt;&amp;gt; &amp;gt; the not taken branch, and 35 bytes for the &amp;lt;pk&amp;gt; schnorr_checksig (1 byte&lt;br/&gt;&amp;gt; &amp;gt; push, 33 bytes PK, 1 byte checksig).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This is 67 bytes more than Taproot would require for the same spending&lt;br/&gt;&amp;gt; &amp;gt; condition.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; However, suppose we wanted to use one of the script paths instead. We&lt;br/&gt;&amp;gt; still&lt;br/&gt;&amp;gt; &amp;gt; need to have one extra hash for the {&amp;lt;pk&amp;gt; schnorr_checksig} (depending on&lt;br/&gt;&amp;gt; &amp;gt; if we put the key in this position or not--see below). But now we can&lt;br/&gt;&amp;gt; spend&lt;br/&gt;&amp;gt; &amp;gt; with just a logarithmic control program path.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; However, if we do the same script via taproot, we now need to provide the&lt;br/&gt;&amp;gt; &amp;gt; base public key (33 bytes) as well as the root hash (32 bytes) and path&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; then the actual scripts. With the need for 2 push bytes, this ends up&lt;br/&gt;&amp;gt; being&lt;br/&gt;&amp;gt; &amp;gt; back at 67 bytes extra.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Is Taproot just a probability assumption about the frequency and&lt;br/&gt;&amp;gt; likelihood&lt;br/&gt;&amp;gt; &amp;gt; of the signature case over the script case? Is this a good assumption?&lt;br/&gt;&amp;gt; The&lt;br/&gt;&amp;gt; &amp;gt; BIP only goes as far as to claim that the advantage is apparent if the&lt;br/&gt;&amp;gt; &amp;gt; outputs *could be spent* as an N of N, but doesn&amp;#39;t make representations&lt;br/&gt;&amp;gt; &amp;gt; about how likely that N of N case would be in practice compared to the&lt;br/&gt;&amp;gt; &amp;gt; script paths. Perhaps among use cases, more than half of the ones we&lt;br/&gt;&amp;gt; expect&lt;br/&gt;&amp;gt; &amp;gt; people to be doing could be spent as an N of N. But how frequently would&lt;br/&gt;&amp;gt; &amp;gt; that path get used? Further, while the *use cases* might skew toward&lt;br/&gt;&amp;gt; things&lt;br/&gt;&amp;gt; &amp;gt; with N of N opt-out, we might end up in a power law case where it&amp;#39;s the&lt;br/&gt;&amp;gt; one&lt;br/&gt;&amp;gt; &amp;gt; case that doesn&amp;#39;t use an N of N opt out at all (or at a de minimis level)&lt;br/&gt;&amp;gt; &amp;gt; that becomes very popular, thereby making Taproot more costly then&lt;br/&gt;&amp;gt; &amp;gt; beneficial.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Further, if you don&amp;#39;t want to use a Taproot top-level key (e.g., you need&lt;br/&gt;&amp;gt; &amp;gt; to be able to audit that no one can spend outside of one of the script&lt;br/&gt;&amp;gt; &amp;gt; conditions), then you need to use a NUMS (nothing up my sleeve) point.&lt;br/&gt;&amp;gt; This&lt;br/&gt;&amp;gt; &amp;gt; forces users who don&amp;#39;t want Taproot to pay the expense, when if they just&lt;br/&gt;&amp;gt; &amp;gt; had a MAST based witness type they would be cheaper. So if this use case&lt;br/&gt;&amp;gt; is&lt;br/&gt;&amp;gt; &amp;gt; at all common, Taproot leaves them worse off in terms of fees. Given that&lt;br/&gt;&amp;gt; &amp;gt; script paths are usually done in the case where there is some contested&lt;br/&gt;&amp;gt; &amp;gt; close, it&amp;#39;s actually in the interest of protocol developers that the&lt;br/&gt;&amp;gt; &amp;gt; contested script path be as efficient as possible so that the fees paid&lt;br/&gt;&amp;gt; &amp;gt; maximally increase the feerate. We think this can be fixed simply in&lt;br/&gt;&amp;gt; &amp;gt; Taproot though, as noted below.&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; On privacy, we&amp;#39;re also a bit confused as to the goal of Taproot over MAST&lt;br/&gt;&amp;gt; &amp;gt; and Schnorr. Earlier, we presented a design with MAST which is very close&lt;br/&gt;&amp;gt; &amp;gt; to Taproot.  However, it&amp;#39;d also be possible to just add {&amp;lt;pk&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; schnorr_checksig} to the set {a,b,c,d,e,f,g,h}, shuffle them, and compute&lt;br/&gt;&amp;gt; &amp;gt; some MAST structure (perhaps probability encoded) on them. This has the&lt;br/&gt;&amp;gt; &amp;gt; effect of not having much additional fees for adding the extra Schnorr&lt;br/&gt;&amp;gt; path&lt;br/&gt;&amp;gt; &amp;gt; at redeem time (only 1 extra branch on 2/8 script paths), e.g.&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;     /    \&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; a b c d e f/\ {&amp;lt;pk&amp;gt; schnorr_checksig}&lt;br/&gt;&amp;gt; &amp;gt;           g  h&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; We could argue that this is more private than Taproot, because we don&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; distinguish between the Schnorr key case and other cases by default, so&lt;br/&gt;&amp;gt; &amp;gt; chain analyzers can&amp;#39;t tell if the signature came from the Taproot case or&lt;br/&gt;&amp;gt; &amp;gt; from one of the Script paths. There&amp;#39;s also no NUMS point required, which&lt;br/&gt;&amp;gt; &amp;gt; means chain analyzers can&amp;#39;t tell when you spend that there was no top&lt;br/&gt;&amp;gt; level&lt;br/&gt;&amp;gt; &amp;gt; key if the NUMS point is not per-output indistinguishable. By using a&lt;br/&gt;&amp;gt; &amp;gt; semi-randomized MAST structure, chain analyzers also can&amp;#39;t tell exactly&lt;br/&gt;&amp;gt; how&lt;br/&gt;&amp;gt; &amp;gt; big your spend condition MAST was. In particular, you care more about&lt;br/&gt;&amp;gt; &amp;gt; privacy when you are contesting a close of a channel or other script path&lt;br/&gt;&amp;gt; &amp;gt; because then the miners could be more likely to extract a rent from you&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;ransom&amp;#34; for properly closing your channel (or in other words, in a&lt;br/&gt;&amp;gt; &amp;gt; contested close the value of the closing transaction is larger than&lt;br/&gt;&amp;gt; usual).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It would also be possible to do something really simple which is to allow&lt;br/&gt;&amp;gt; &amp;gt; the witness type to be either a MAST hash OR a schnorr key (but not a&lt;br/&gt;&amp;gt; &amp;gt; Taproot). This allows you to not completely fracture the anonymity set&lt;br/&gt;&amp;gt; &amp;gt; between people who want plain Schnorr and people who want MAST (at least&lt;br/&gt;&amp;gt; &amp;gt; until they go to spend). This fix can also be used in Taproot in place&lt;br/&gt;&amp;gt; of a&lt;br/&gt;&amp;gt; &amp;gt; NUMS point, to decrease extra fees. It&amp;#39;s unclear if this plays negatively&lt;br/&gt;&amp;gt; &amp;gt; with any future batch validation mechanism though, but the contextual&lt;br/&gt;&amp;gt; &amp;gt; checks to exclude a witness program from the batch are relatively simple.&lt;br/&gt;&amp;gt; &amp;gt; See thread subject, &amp;#34;Taproot Public NUMS Optimization&amp;#34;.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The considerations around Graftroot, a proposed delegation mechanism, is&lt;br/&gt;&amp;gt; a&lt;br/&gt;&amp;gt; &amp;gt; bit similar. Delegation is a mechanism by which a UTXO with script S can&lt;br/&gt;&amp;gt; &amp;gt; sign a script R which can then be executed in addition to S without&lt;br/&gt;&amp;gt; &amp;gt; requiring a transaction. This allows an output to monotonically and&lt;br/&gt;&amp;gt; &amp;gt; dynamically increase the number of conditions under which it can be&lt;br/&gt;&amp;gt; spent.&lt;br/&gt;&amp;gt; &amp;gt; As noted by Pieter Wiulle here:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/kanzure/diyhpluswiki/commit/a03f6567d714f8733b578de263a4b149441cd058&#34;&gt;https://github.com/kanzure/diyhpluswiki/commit/a03f6567d714f8733b578de263a4b149441cd058&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; delegation was originally possible in Bitcoin, but got broken during an&lt;br/&gt;&amp;gt; &amp;gt; emergency fork to split the scriptSig and scriptpubkey separation. Rather&lt;br/&gt;&amp;gt; &amp;gt; than adding some fancy delegation mechanism in Bitcoin, why not just&lt;br/&gt;&amp;gt; have a&lt;br/&gt;&amp;gt; &amp;gt; P2SH-like semantic which allows a delegated script to be evaluated? See&lt;br/&gt;&amp;gt; &amp;gt; BIP-117 &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0117.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0117.mediawiki&lt;/a&gt;.&lt;br/&gt;&amp;gt; &amp;gt; This way we aren&amp;#39;t special casing where delegation can occur, and we can&lt;br/&gt;&amp;gt; &amp;gt; allow taproot nested spending conditions (i.e., with timelocks) to&lt;br/&gt;&amp;gt; generate&lt;br/&gt;&amp;gt; &amp;gt; their own delegations. As I&amp;#39;ve seen Graftroot discussed thus far, it is&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; &amp;gt; a top-level witness program version like Taproot and non-recursive.&lt;br/&gt;&amp;gt; Similar&lt;br/&gt;&amp;gt; &amp;gt; to the above discussion, top-level is more efficient if you suspect that&lt;br/&gt;&amp;gt; &amp;gt; delegation will be most likely occurring at the top level, but it&amp;#39;s not&lt;br/&gt;&amp;gt; &amp;gt; clear that&amp;#39;s a good assumption as it may be common to want to allow&lt;br/&gt;&amp;gt; &amp;gt; different scripts to delegate.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Overall, we are left with concerns both about the merit of doing Taproot&lt;br/&gt;&amp;gt; &amp;gt; versus alternatives, as well as the process through which we got to be&lt;br/&gt;&amp;gt; here.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1) Is Taproot actually more private than bare MAST and Schnorr&lt;br/&gt;&amp;gt; separately?&lt;br/&gt;&amp;gt; &amp;gt; What are the actual anonymity set benefits compared to doing the&lt;br/&gt;&amp;gt; separately?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2) Is Taproot actually cheaper than bare MAST and Schnorr separately?&lt;br/&gt;&amp;gt; What&lt;br/&gt;&amp;gt; &amp;gt; evidence do we have that the assumption it will be more common to use&lt;br/&gt;&amp;gt; &amp;gt; Taproot with a key will outweigh Script cases?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 3) Is Taproot riskier than bare MAST and Schnorr separately given the new&lt;br/&gt;&amp;gt; &amp;gt; crypto? How well reviewed is the actual crypto parts? None of us&lt;br/&gt;&amp;gt; personally&lt;br/&gt;&amp;gt; &amp;gt; feel comfortable reviewing the crypto in Schnorr -- what&amp;#39;s the set of&lt;br/&gt;&amp;gt; &amp;gt; people who have thoroughly reviewed the crypto and aren&amp;#39;t just ACKing&lt;br/&gt;&amp;gt; &amp;gt; because they trust other developers to have looked at it close enough?&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 4) Design wise, couldn&amp;#39;t we forego the NUMS point requirement and be able&lt;br/&gt;&amp;gt; &amp;gt; to check if it&amp;#39;s a hash root directly? This would encumber users who&lt;br/&gt;&amp;gt; don&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; need the key path a cheaper spend path. See thread subject, &amp;#34;Taproot&lt;br/&gt;&amp;gt; Public&lt;br/&gt;&amp;gt; &amp;gt; NUMS Optimization&amp;#34;.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 5) Is the development model of trying to jam a bunch of features into&lt;br/&gt;&amp;gt; &amp;gt; Bitcoin all at once good for Bitcoin development? Would we be better off&lt;br/&gt;&amp;gt; if&lt;br/&gt;&amp;gt; &amp;gt; we embraced incremental improvements that can work together (e.g., MAST&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; then Schnorr)?  Although the BIP raises some points about anonymity sets&lt;br/&gt;&amp;gt; &amp;gt; being why to do them all at once, it&amp;#39;s not clear to me this argument&lt;br/&gt;&amp;gt; holds&lt;br/&gt;&amp;gt; &amp;gt; water (same goes for businesses not upgrading). If we can take things as&lt;br/&gt;&amp;gt; &amp;gt; smaller steps, we are not only more secure, but we also have more time to&lt;br/&gt;&amp;gt; &amp;gt; dedicate review to each change independently. We also end up co-mingling&lt;br/&gt;&amp;gt; &amp;gt; changes that people end up accepting only because they want one and&lt;br/&gt;&amp;gt; they&amp;#39;re&lt;br/&gt;&amp;gt; &amp;gt; bundled (e.g., MAST and Schnorr, MAST seems like a much less risky&lt;br/&gt;&amp;gt; addition&lt;br/&gt;&amp;gt; &amp;gt; versus Schnorr). See thread subject, &amp;#34;An Alternative Deployment Path for&lt;br/&gt;&amp;gt; &amp;gt; Taproot Technologies&amp;#34;.&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; Our provocation with this email is primarily that we think we should more&lt;br/&gt;&amp;gt; &amp;gt; carefully consider the benefits of Taproot over simpler primitives that&lt;br/&gt;&amp;gt; are&lt;br/&gt;&amp;gt; &amp;gt; not only easier to review, but could have been made available much sooner&lt;br/&gt;&amp;gt; &amp;gt; rather than waiting on putting everything all together for an unclear&lt;br/&gt;&amp;gt; &amp;gt; aggregate benefit.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; We do think that most of the developers have been honest about the&lt;br/&gt;&amp;gt; benefits&lt;br/&gt;&amp;gt; &amp;gt; of Taproot, but that on closer look we feel the general ecosystem has&lt;br/&gt;&amp;gt; &amp;gt; oversold Taproot as being the key enabler for a collection of techniques&lt;br/&gt;&amp;gt; &amp;gt; that we could do with much simpler building blocks.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; At the end of the day, we do not strongly advocate not deploying Taproot&lt;br/&gt;&amp;gt; at&lt;br/&gt;&amp;gt; &amp;gt; this point in the review cycle. We think the Taproot Public NUMS&lt;br/&gt;&amp;gt; &amp;gt; Optimization may be a good idea, worth considering if it&amp;#39;s not insecure,&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; &amp;gt; it cuts through the case where you would otherwise need a NUMS point.&lt;br/&gt;&amp;gt; &amp;gt; Things like TapScript and its MAST mechanisms are well designed and offer&lt;br/&gt;&amp;gt; &amp;gt; exciting new deployment paths, and would be something we would use even&lt;br/&gt;&amp;gt; if&lt;br/&gt;&amp;gt; &amp;gt; we opted for MAST instead of Taproot. However, we also believe it is our&lt;br/&gt;&amp;gt; &amp;gt; duty to raise these concerns and suggestions, and we look forward to&lt;br/&gt;&amp;gt; &amp;gt; listening to the responses of the community.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Great thanks,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The Group&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; SUBJECT: An Alternative Deployment Path for Taproot Technologies&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This email is the second of a collection of sentiments from a group of&lt;br/&gt;&amp;gt; &amp;gt; developers who in aggregate prefer to remain anonymous. These emails have&lt;br/&gt;&amp;gt; &amp;gt; been sent under a pseudonym so as to keep the focus of discussion on the&lt;br/&gt;&amp;gt; &amp;gt; merits of the technical issues, rather than miring the discussion in&lt;br/&gt;&amp;gt; &amp;gt; personal politics. Our goal isn&amp;#39;t to cause a schism, but rather to help&lt;br/&gt;&amp;gt; &amp;gt; figure out what the path forward is with Taproot. To that end, we: [clip&lt;br/&gt;&amp;gt; &amp;gt; repeat]&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a follow up to our prior message, we propose a different path forward&lt;br/&gt;&amp;gt; &amp;gt; for the Taproot family of changes:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1) A separate soft-fork for Merkle Branch Witnesses based on Taproot;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2) A separate soft-fork for Schnorr Signatures&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 3) A separate follow up soft-fork which enables Taproot and Graftroot&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; We think that the first 2 forks can be offered at the same time or one&lt;br/&gt;&amp;gt; at a&lt;br/&gt;&amp;gt; &amp;gt; time.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Taproot, as a follow up to changes 1 and 2, can be enabled as a soft-fork&lt;br/&gt;&amp;gt; &amp;gt; on the existing semantics, but requiring a new witness version. With the&lt;br/&gt;&amp;gt; &amp;gt; Public NUMS Optimization, wallets could upgrade by just changing one&lt;br/&gt;&amp;gt; &amp;gt; version byte to be in the same anonymity set as Taproot.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; It&amp;#39;s not clear to us that the time to prepare a BIP and implementation&lt;br/&gt;&amp;gt; for&lt;br/&gt;&amp;gt; &amp;gt; 1 and 2 at this point would be any less than the time to do Taproot as&lt;br/&gt;&amp;gt; &amp;gt; currently proposed. However, we believe that such a deployment plan is a&lt;br/&gt;&amp;gt; &amp;gt; reasonable option as it is more conservative, as Merkle Branch witnesses&lt;br/&gt;&amp;gt; &amp;gt; are relatively simple and users only have to use Schnorr signing if they&lt;br/&gt;&amp;gt; &amp;gt; want to, and can otherwise continue to use ECDSA. A further benefit of&lt;br/&gt;&amp;gt; &amp;gt; waiting on 3 is that we get to collect real world protocol engineering&lt;br/&gt;&amp;gt; &amp;gt; experience to see how frequently the Taproot frequency of use assumption&lt;br/&gt;&amp;gt; &amp;gt; holds, and if it is worth doing or not.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Great thanks,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The Group&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; SUBJECT: Taproot Public NUMS Optimization&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; This email is the third of a collection of sentiments from a group of&lt;br/&gt;&amp;gt; &amp;gt; developers who in aggregate prefer to remain anonymous. These emails have&lt;br/&gt;&amp;gt; &amp;gt; been sent under a pseudonym so as to keep the focus of discussion on the&lt;br/&gt;&amp;gt; &amp;gt; merits of the technical issues, rather than miring the discussion in&lt;br/&gt;&amp;gt; &amp;gt; personal politics. Our goal isn&amp;#39;t to cause a schism, but rather to help&lt;br/&gt;&amp;gt; &amp;gt; figure out what the path forward is with Taproot. To that end, we:&lt;br/&gt;&amp;gt; [clipped&lt;br/&gt;&amp;gt; &amp;gt; again]&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; We propose to modify Taproot&amp;#39;s specification in BIP-341 by adding the&lt;br/&gt;&amp;gt; rule:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If there is one element on the witness stack:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 1) Attempt hashing it to see if it&amp;#39;s equal to  the witness program. The&lt;br/&gt;&amp;gt; &amp;gt; first byte is the control byte for leaf versioning.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; 2) If it&amp;#39;s not the witness program, and it&amp;#39;s 65 bytes, try signature&lt;br/&gt;&amp;gt; &amp;gt; validation&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If there is more than one element on the witness stack:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If the control block is even, treat it as a non-Taproot MAST and get the&lt;br/&gt;&amp;gt; &amp;gt; leaf version as the last byte of the script (so you can pop it off before&lt;br/&gt;&amp;gt; &amp;gt; hashing).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If greater anonymity is required, a NUMS point can still be used in&lt;br/&gt;&amp;gt; &amp;gt; Taproot, at the expense of the additional data. However, if NUMS points&lt;br/&gt;&amp;gt; are&lt;br/&gt;&amp;gt; &amp;gt; just a couple well known constants this could actually decrease privacy&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; &amp;gt; then the NUMS points could differ from application to application&lt;br/&gt;&amp;gt; &amp;gt; fingerprinting wallets.  Instead, the NUMS point should only be used&lt;br/&gt;&amp;gt; when a&lt;br/&gt;&amp;gt; &amp;gt; single use nonce can be sent, so that NUMS cannot be distinguished from a&lt;br/&gt;&amp;gt; &amp;gt; normal Taproot to a third party who doesn&amp;#39;t know the setup (e.g., that&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt; NUMS is H(X) for known X).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Great thanks,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The Group&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; 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/20200214/5b6e9b27/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20200214/5b6e9b27/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:22:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszmfxkfj8gr44ntsyccmq7mlvnprrfku76rxngx9zs4atmq68dkeqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgku2h7q</id>
    
      <title type="html">📅 Original date posted:2019-10-27 📝 Original message:Johan, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszmfxkfj8gr44ntsyccmq7mlvnprrfku76rxngx9zs4atmq68dkeqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgku2h7q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsff9mda6ctjgsz522nu7p6m3za52y5lt2vthpk0fhlsmjze0ket6gca3z0d&#39;&gt;nevent1q…3z0d&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-27&lt;br/&gt;📝 Original message:Johan,&lt;br/&gt;&lt;br/&gt;The issues with mempool limits for OP_SECURETHEBAG are related, but have&lt;br/&gt;distinct solutions.&lt;br/&gt;&lt;br/&gt;There are two main categories of mempool issues at stake. One is relay&lt;br/&gt;cost, the other is mempool walking.&lt;br/&gt;&lt;br/&gt;In terms of relay cost, if an ancestor can be replaced, it will invalidate&lt;br/&gt;all it&amp;#39;s children, meaning that no one paid for that broadcasting. This can&lt;br/&gt;be fixed by appropriately assessing Replace By Fee update fees to&lt;br/&gt;encapsulate all descendants, but there are some tricky edge cases that make&lt;br/&gt;this non-obvious to do.&lt;br/&gt;&lt;br/&gt;The other issue is walking the mempool -- many of the algorithms we use in&lt;br/&gt;the mempool can be N log N or N^2 in the number of descendants. (simple&lt;br/&gt;example: an input chain of length N to a fan out of N outputs that are all&lt;br/&gt;spent, is O(N^2) to look up ancestors per-child, unless we&amp;#39;re caching).&lt;br/&gt;&lt;br/&gt;The other sort of walking issue is where the indegree or outdegree for a&lt;br/&gt;transaction is high. Then when we are computing descendants or ancestors we&lt;br/&gt;will need to visit it multiple times. To avoid re-expanding a node, we&lt;br/&gt;currently cache it with a set. This uses O(N) extra memory and makes O(N&lt;br/&gt;Log N) (we use std::set not unordered_set) comparisons.&lt;br/&gt;&lt;br/&gt;I just opened a PR which should help with some of the walking issues by&lt;br/&gt;allowing us to cheaply cache which nodes we&amp;#39;ve visited on a run. It makes a&lt;br/&gt;lot of previously O(N log N) stuff O(N) and doesn&amp;#39;t allocate as much new&lt;br/&gt;memory. See: &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/17268&#34;&gt;https://github.com/bitcoin/bitcoin/pull/17268&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Now, for OP_SECURETHEBAG we want a particular property that is very&lt;br/&gt;different from with lightning htlcs (as is). We want that an unlimited&lt;br/&gt;number of child OP_SECURETHEBAG txns may extend from a confirmed&lt;br/&gt;OP_SECURETHEBAG, and then at the leaf nodes, we want the same rule as&lt;br/&gt;lightning (one dangling unconfirmed to permit channels).&lt;br/&gt;&lt;br/&gt;OP_SECURETHEBAG can help with the LN issue by putting all HTLCS into a tree&lt;br/&gt;where they are individualized leaf nodes with a preceding CSV. Then, the&lt;br/&gt;above fix would ensure each HTLC always has time to close properly as they&lt;br/&gt;would have individualized lockpoints. This is desirable for some additional&lt;br/&gt;reasons and not for others, but it should &amp;#34;work&amp;#34;.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Oct 25, 2019 at 10:31 AM Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I don’te see how? Let’s imagine Party A has two spendable outputs, now&lt;br/&gt;&amp;gt; they stuff the package size on one of their spendable outlets until it is&lt;br/&gt;&amp;gt; right at the limit, add one more on their other output (to meet the&lt;br/&gt;&amp;gt; Carve-Out), and now Party B can’t do anything.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Oct 24, 2019, at 21:05, Johan Torås Halseth &amp;lt;johanth at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ﻿&lt;br/&gt;&amp;gt; It essentially changes the rule to always allow CPFP-ing the commitment as&lt;br/&gt;&amp;gt; long as there is an output available without any descendants. It changes&lt;br/&gt;&amp;gt; the commitment from &amp;#34;you always need at least, and exactly, one non-CSV&lt;br/&gt;&amp;gt; output per party. &amp;#34; to &amp;#34;you always need at least one non-CSV output per&lt;br/&gt;&amp;gt; party. &amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I realize these limits are there for a reason though, but I&amp;#39;m wondering if&lt;br/&gt;&amp;gt; could relax them. Also now that jeremyrubin has expressed problems with the&lt;br/&gt;&amp;gt; current mempool limits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu, Oct 24, 2019 at 11:25 PM Matt Corallo &amp;lt;lf-lists at mattcorallo.com&amp;gt;&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I may be missing something, but I&amp;#39;m not sure how this changes anything?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; If you have a commitment transaction, you always need at least, and&lt;br/&gt;&amp;gt;&amp;gt; exactly, one non-CSV output per party. The fact that there is a size&lt;br/&gt;&amp;gt;&amp;gt; limitation on the transaction that spends for carve-out purposes only&lt;br/&gt;&amp;gt;&amp;gt; effects how many other inputs/outputs you can add, but somehow I doubt&lt;br/&gt;&amp;gt;&amp;gt; its ever going to be a large enough number to matter.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Matt&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On 10/24/19 1:49 PM, Johan Torås Halseth wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Reviving this old thread now that the recently released RC for bitcoind&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; 0.19 includes the above mentioned carve-out rule.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; In an attempt to pave the way for more robust CPFP of on-chain contracts&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; (Lightning commitment transactions), the carve-out rule was added in&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15681&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15681&lt;/a&gt;. However, having worked&lt;br/&gt;&amp;gt;&amp;gt; on&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; an implementation of a new commitment format for utilizing the Bring&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Your Own Fees strategy using CPFP, I’m wondering if the special case&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; rule should have been relaxed a bit, to avoid the need for adding a 1&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; CSV to all outputs (in case of Lightning this means HTLC scripts would&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; need to be changed to add the CSV delay).&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Instead, what about letting the rule be&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; The last transaction which is added to a package of dependent&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; transactions in the mempool must:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;   * Have no more than one unconfirmed parent.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; This would of course allow adding a large transaction to each output of&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; the unconfirmed parent, which in effect would allow an attacker to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; exceed the MAX_PACKAGE_VIRTUAL_SIZE limit in some cases. However, is&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; this a problem with the current mempool acceptance code in bitcoind? I&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; would imagine evicting transactions based on feerate when the max&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; mempool size is met handles this, but I’m asking since it seems like&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; there has been several changes to the acceptance code and eviction&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; policy since the limit was first introduced.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; - Johan&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; On Wed, Feb 13, 2019 at 6:57 AM Rusty Russell &amp;lt;rusty at rustcorp.com.au&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; &amp;lt;mailto:rusty at rustcorp.com.au&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     Matt Corallo &amp;lt;lf-lists at mattcorallo.com&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;lt;mailto:lf-lists at mattcorallo.com&amp;gt;&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&amp;gt;&amp;gt; Thus, even if you imagine a steady-state mempool growth, unless&lt;br/&gt;&amp;gt;&amp;gt; the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&amp;gt;&amp;gt; &amp;#34;near the top of the mempool&amp;#34; criteria is &amp;#34;near the top of the&lt;br/&gt;&amp;gt;&amp;gt; next&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&amp;gt;&amp;gt; block&amp;#34; (which is obviously *not* incentive-compatible)&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 was defining &amp;#34;top of mempool&amp;#34; as &amp;#34;in the first 4 MSipa&amp;#34;, ie.&lt;br/&gt;&amp;gt;&amp;gt; next&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&amp;gt; block, and assumed you&amp;#39;d only allow RBF if the old package wasn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     in the&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&amp;gt; top and the replacement would be.  That seems incentive&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     compatible; more&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&amp;gt; than the current scheme?&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     &amp;gt; My point was, because of block time variance, even that criteria&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     doesn&amp;#39;t hold up. If you assume a steady flow of new transactions and&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     one or two blocks come in &amp;#34;late&amp;#34;, suddenly &amp;#34;top 4MWeight&amp;#34; isn&amp;#39;t&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     likely to get confirmed until a few blocks come in &amp;#34;early&amp;#34;. Given&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     block variance within a 12 block window, this is a relatively likely&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     scenario.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     [ Digging through old mail. ]&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     Doesn&amp;#39;t really matter.  Lightning close algorithm would be:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     1.  Give bitcoind unileratal close.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     2.  Ask bitcoind what current expidited fee is (or survey your&lt;br/&gt;&amp;gt;&amp;gt; mempool).&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     3.  Give bitcoind child &amp;#34;push&amp;#34; tx at that total feerate.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     4.  If next block doesn&amp;#39;t contain unilateral close tx, goto 2.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     In this case, if you allow a simpified RBF where &amp;#39;you can replace if&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     1. feerate is higher, 2. new tx is in first 4Msipa of mempool, 3.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     old tx isnt&amp;#39;,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     it works.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     It allows someone 100k of free tx spam, sure.  But it&amp;#39;s simple.&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     We could further restrict it by marking the unilateral close&lt;br/&gt;&amp;gt;&amp;gt; somehow to&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     say &amp;#34;gonna be pushed&amp;#34; and further limiting the child tx weight (say,&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt;     5kSipa?) in that case.&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;     Rusty.&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;     &amp;lt;mailto:Lightning-dev at lists.linuxfoundation.org&amp;gt;&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;&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/bitcoin-dev/attachments/20191027/184af597/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191027/184af597/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:21:25&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs802jqzh2tygddhez2hrs7vwz6ssypry0lmlcjzgndhg2aa96uz9qzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tguk6scg</id>
    
      <title type="html">📅 Original date posted:2019-10-04 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs802jqzh2tygddhez2hrs7vwz6ssypry0lmlcjzgndhg2aa96uz9qzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tguk6scg" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs86jscq66u5d5enx0h3ukl5y2zjpcejz6ttaqqcjauphejxgwmr2qw6yl6n&#39;&gt;nevent1q…yl6n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-04&lt;br/&gt;📝 Original message:Interesting point.&lt;br/&gt;&lt;br/&gt;The script is under your control, so you should be able to ensure that you&lt;br/&gt;are always using a correctly constructed midstate, e.g., something like:&lt;br/&gt;&lt;br/&gt;scriptPubKey: &amp;lt;-1&amp;gt; OP_SHA256STREAM DEPTH OP_SHA256STREAM &amp;lt;-2&amp;gt;&lt;br/&gt;OP_SHA256STREAM&lt;br/&gt;&amp;lt;hash&amp;gt; OP_EQUALVERIFY&lt;br/&gt;&lt;br/&gt;would hash all the elements on the stack and compare to a known hash.&lt;br/&gt;How is that sort of thing weak to midstateattacks?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Oct 4, 2019 at 4:16 AM Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Oct 03, 2019 at 10:02:14PM -0700, Jeremy via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Awhile back, Ethan and I discussed having, rather than OP_CAT, an&lt;br/&gt;&amp;gt; &amp;gt; OP_SHA256STREAM that uses the streaming properties of a SHA256 hash&lt;br/&gt;&amp;gt; &amp;gt; function to allow concatenation of an unlimited amount of data, provided&lt;br/&gt;&amp;gt; &amp;gt; the only use is to hash it.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; You can then use it perhaps as follows:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; // start a new hash with item&lt;br/&gt;&amp;gt; &amp;gt; OP_SHA256STREAM  (-1) -&amp;gt; [state]&lt;br/&gt;&amp;gt; &amp;gt; // Add item to the hash in state&lt;br/&gt;&amp;gt; &amp;gt; OP_SHA256STREAM n [item] [state] -&amp;gt; [state]&lt;br/&gt;&amp;gt; &amp;gt; // Finalize&lt;br/&gt;&amp;gt; &amp;gt; OP_SHA256STREAM (-2) [state] -&amp;gt; [Hash]&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;-1&amp;gt; OP_SHA256STREAM &amp;lt;tag&amp;gt; &amp;lt;subnode 2&amp;gt; &amp;lt;subnode 3&amp;gt; &amp;lt;3&amp;gt; OP_SHA256STREAM&lt;br/&gt;&amp;gt; &amp;lt;-2&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; OP_SHA256STREAM&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One issue with this is the simplest implementation where the state is just&lt;br/&gt;&amp;gt; raw&lt;br/&gt;&amp;gt; bytes would expose raw SHA256 midstates, allowing people to use them&lt;br/&gt;&amp;gt; directly;&lt;br/&gt;&amp;gt; preventing that would require adding types to the stack. Specifically I&lt;br/&gt;&amp;gt; could&lt;br/&gt;&amp;gt; write a script that rather than initializing the state correctly from the&lt;br/&gt;&amp;gt; official IV, instead takes an untrusted state as input.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; SHA256 isn&amp;#39;t designed to be used in situations where adversaries control&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; initialization vector. I personally don&amp;#39;t know one way or the other if&lt;br/&gt;&amp;gt; anyone&lt;br/&gt;&amp;gt; has analyzed this in detail, but I&amp;#39;d be surprised if that&amp;#39;s secure. I&lt;br/&gt;&amp;gt; considered adding midstate support to OpenTimestamps but decided against&lt;br/&gt;&amp;gt; it for&lt;br/&gt;&amp;gt; exactly that reason.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t have the link handy but there&amp;#39;s even an example of an experienced&lt;br/&gt;&amp;gt; cryptographer on this very list (bitcoin-dev) proposing a design that falls&lt;br/&gt;&amp;gt; victim to this attack. It&amp;#39;s a subtle issue and we probably don&amp;#39;t want to&lt;br/&gt;&amp;gt; encourage it.&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; 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/bitcoin-dev/attachments/20191004/bda6e24c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20191004/bda6e24c/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:20:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx7mq2ff7ehhrw4hx0qm963garpqyz8nnap6s080ljnp6gzy0ugkgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgwa3py0</id>
    
      <title type="html">📅 Original date posted:2019-06-23 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx7mq2ff7ehhrw4hx0qm963garpqyz8nnap6s080ljnp6gzy0ugkgzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgwa3py0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspul96cpw4x72jwlgkmk6aqm5wcc8zvsde56a7ushs34zheu5ferc4t5z7r&#39;&gt;nevent1q…5z7r&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-06-23&lt;br/&gt;📝 Original message:This is insufficient: sequences must be committed to because they affect&lt;br/&gt;TXID. As with scriptsigs (witness data fine to ignore). NUM_IN too.&lt;br/&gt;&lt;br/&gt;Any malleability makes this much less useful.&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Fri, Jun 21, 2019 at 10:31 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 Tue, Jun 18, 2019 at 04:57:34PM -0400, Russell O&amp;#39;Connor wrote:&lt;br/&gt;&amp;gt; &amp;gt; So with regards to OP_SECURETHEBAG, I am also &amp;#34;not really seeing any&lt;br/&gt;&amp;gt; reason to&lt;br/&gt;&amp;gt; &amp;gt; complicate the spec to ensure the digest is precommitted as part of the&lt;br/&gt;&amp;gt; &amp;gt; opcode.&amp;#34;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Also, I think you can simulate OP_SECURETHEBAG with an ANYPREVOUT&lt;br/&gt;&amp;gt; (NOINPUT) sighash (Johnson Lau&amp;#39;s mentioned this before, but not sure if&lt;br/&gt;&amp;gt; it&amp;#39;s been spelled out anywhere); ie instead of constructing&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   X = Hash_BagHash( version, locktime, [outputs], [sequences], num_in )&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; and having the script be &amp;#34;&amp;lt;X&amp;gt; OP_SECURETHEBAG&amp;#34; you calculate an&lt;br/&gt;&amp;gt; ANYPREVOUT sighash for SIGHASH_ANYPREVOUTANYSCRIPT | SIGHASH_ALL:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   Y = Hash_TapSighash( 0, 0xc1, version, locktime, [outputs], 0,&lt;br/&gt;&amp;gt;                        amount, sequence)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; and calculate a signature sig = Schnorr(P,m) for some pubkey P, and&lt;br/&gt;&amp;gt; make your script be &amp;#34;&amp;lt;sig&amp;gt; &amp;lt;P&amp;gt; CHECKSIG&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That loses the ability to commit to the number of inputs or restrict&lt;br/&gt;&amp;gt; the nsequence of other inputs, and requires a bigger script (sig and P&lt;br/&gt;&amp;gt; are ~96 bytes instead of X&amp;#39;s 32 bytes), but is otherwise pretty much the&lt;br/&gt;&amp;gt; same as far as I can tell. Both scripts are automatically satisfied when&lt;br/&gt;&amp;gt; revealed (with the correct set of outputs), and don&amp;#39;t need any additional&lt;br/&gt;&amp;gt; witness data.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If you wanted to construct &amp;#34;X&amp;#34; via script instead of hardcoding a value&lt;br/&gt;&amp;gt; because it got you generalised covenants or whatever; I think you could&lt;br/&gt;&amp;gt; get the same effect with CAT,LEFT, and RIGHT: you&amp;#39;d construct Y in much&lt;br/&gt;&amp;gt; the same way you construct X, but you&amp;#39;d then need to turn that into a&lt;br/&gt;&amp;gt; signature. You could do so by using pubkey P=G and nonce R=G, which&lt;br/&gt;&amp;gt; means you need to calculate s=1&#43;hash(G,G,Y)*1 -- calculating the hash&lt;br/&gt;&amp;gt; part is easy, multiplying it by 1 is easy, and to add 1 you can probably&lt;br/&gt;&amp;gt; do something along the lines of:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;     OP_DUP 4 OP_RIGHT 1 OP_ADD OP_SWAP 28 OP_LEFT OP_SWAP OP_CAT&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (ie, take the last 4 bytes, increment it using 4-byte arithmetic,&lt;br/&gt;&amp;gt; then cat the first 28 bytes and the result. There&amp;#39;s overflow issues,&lt;br/&gt;&amp;gt; but I think they can be worked around either by allowing you to choose&lt;br/&gt;&amp;gt; different locktimes, or by more complicated script)&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; _______________________________________________&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/20190622/df90c3c4/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190622/df90c3c4/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:18:27&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxwex7nrgk9ezmkg5qtlr4hk734sae8a655mwdfd6sn50ds5e7vxszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgj8mtl8</id>
    
      <title type="html">📅 Original date posted:2019-06-02 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxwex7nrgk9ezmkg5qtlr4hk734sae8a655mwdfd6sn50ds5e7vxszyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tgj8mtl8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0s9l2h55ecfjc4csq8fxg3rmqrhxn25as8m0w4nze2c05c3tjeucezgus8&#39;&gt;nevent1q…gus8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-06-02&lt;br/&gt;📝 Original message:Hi Russell,&lt;br/&gt;&lt;br/&gt;Thanks for the response. I double checked my work in drafting my response&lt;br/&gt;and realized I didn&amp;#39;t address all the malleability concerns, I believe I&lt;br/&gt;have now (fingers crossed) addressed all points of malleability.&lt;br/&gt;&lt;br/&gt;*The malleability concerns are as follows:*&lt;br/&gt;&lt;br/&gt;A TXID is computed as:&lt;br/&gt;&lt;br/&gt;def txid(self):&lt;br/&gt;         r = b&amp;#34;&amp;#34;&lt;br/&gt;         r &#43;= struct.pack(&amp;#34;&amp;lt;i&amp;#34;, self.nVersion)&lt;br/&gt;         r &#43;= ser_vector(self.vin)&lt;br/&gt;         r &#43;= ser_vector(self.vout)&lt;br/&gt;         r &#43;= struct.pack(&amp;#34;&amp;lt;I&amp;#34;, self.nLockTime)&lt;br/&gt;         return sha256(r)&lt;br/&gt;&lt;br/&gt;if the bag hash is just:&lt;br/&gt;&lt;br/&gt;def get_bag_hash(self):&lt;br/&gt;         r = b&amp;#34;&amp;#34;&lt;br/&gt;         r &#43;= ser_vector(self.vout)&lt;br/&gt;         return TaggedHash(&amp;#34;BagHash&amp;#34;, r)&lt;br/&gt;&lt;br/&gt;We allow changing a few things: nVersion, nLockTime, scriptSig (per input),&lt;br/&gt;number of inputs, nSequence (per input) which can change the TXID/what the&lt;br/&gt;transaction does.&lt;br/&gt;&lt;br/&gt;changing nVersion: can disable BIP68, change TXID&lt;br/&gt;changing nLockTime: can change TXID&lt;br/&gt;changing nSequence: can change TXID&lt;br/&gt;changing number of inputs: half spend problem, change TXID&lt;br/&gt;changing scriptsigs: change TXID if co-spent with legacy input&lt;br/&gt;&lt;br/&gt;Instead, we can use the following digest:&lt;br/&gt;&lt;br/&gt;    def get_bag_hash(self):&lt;br/&gt;         r = b&amp;#34;&amp;#34;&lt;br/&gt;         r &#43;= struct.pack(&amp;#34;&amp;lt;i&amp;#34;, self.nVersion)&lt;br/&gt;         r &#43;= struct.pack(&amp;#34;&amp;lt;I&amp;#34;, self.nLockTime)&lt;br/&gt;         r &#43;= sha256(b&amp;#34;&amp;#34;.join(out.serialize() for out in self.vout))&lt;br/&gt;         r &#43;= sha256(b&amp;#34;&amp;#34;.join(struct.pack(&amp;#34;&amp;lt;I&amp;#34;, inp.nSequence) for inp in&lt;br/&gt;self.vin))&lt;br/&gt;         r &#43;= struct.pack(&amp;#34;&amp;lt;Q&amp;#34;, len(self.vin))&lt;br/&gt;         for inp in self.vin:&lt;br/&gt;             r &#43;= ser_string(inp.scriptSig)&lt;br/&gt;         return TaggedHash(&amp;#34;BagHash&amp;#34;, r)&lt;br/&gt;&lt;br/&gt;which should lock in all the relevant bits. The only part left out is the&lt;br/&gt;COutpoint, which can&amp;#39;t be known ahead of time (because it depends on the&lt;br/&gt;creating txn). Technically, len(vin) is redundant with&lt;br/&gt;sha256(b&amp;#34;&amp;#34;.join(struct.pack(&amp;#34;&amp;lt;I&amp;#34;, inp.nSequence) for inp in self.vin)),&lt;br/&gt;because the length padding on the hash implied the number of inputs, but I&lt;br/&gt;figured it&amp;#39;s best to err on explicit.&lt;br/&gt;&lt;br/&gt;A further benefit (in a CISC sense) of committing to all these values is&lt;br/&gt;that we enforce CLTV and CSV semantics for free on OP_SECURETHEBAG scripts,&lt;br/&gt;which helps with channels.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;*Treating OP_SECURETHEBAG as a PUSHDATA:*&lt;br/&gt;&lt;br/&gt;I agree in theory it&amp;#39;s nicer, and am 100% open to implementing it that way.&lt;br/&gt;The only concern I have with doing it this way is that it means that a&lt;br/&gt;flags must be added to GetOp (or GetOp must be modularized to be per-script&lt;br/&gt;version) because it affects script parsing, as opposed to using a multibyte&lt;br/&gt;opcode which contains a pushdata, which remain compatible with prior script&lt;br/&gt;parsing.&lt;br/&gt;&lt;br/&gt;I&amp;#39;d like to get rough consensus on the best approach for compatibility with&lt;br/&gt;downstream software, hence choosing this option for the draft.&lt;br/&gt;&lt;br/&gt;Personally, my preference is to *not* do flags and just have a separate&lt;br/&gt;parser version which cleans up some of our past sins. We can experiment&lt;br/&gt;with a fancier parser (as you&amp;#39;ve shown in Haskell/Rust/Coq), perhaps even&lt;br/&gt;bitwise huffman encoding opcodes to save space on scripts (i.e. the 7 most&lt;br/&gt;common opcodes could fit within 3 bits) or whatever else we like. I just&lt;br/&gt;didn&amp;#39;t want to have the scope creep too far on this particular BIP, but I&amp;#39;m&lt;br/&gt;with you that lookahead is a hack compared to an actual parametrized&lt;br/&gt;argument.&lt;br/&gt;&lt;br/&gt;I think you&amp;#39;d also appreciate the template script expansion approach&lt;br/&gt;mentioned in the BIP -- it gets around some of these concerns, but requires&lt;br/&gt;changes to Taproot.&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/20190602/dfb4e5a2/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190602/dfb4e5a2/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:18:26&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqntq6erdpn4yh08rj7ln3tcdvkqy22nl0mcq8v0rhmg3c8fws3gqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg43qtl6</id>
    
      <title type="html">📅 Original date posted:2017-01-03 📝 Original message:It is ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqntq6erdpn4yh08rj7ln3tcdvkqy22nl0mcq8v0rhmg3c8fws3gqzyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg43qtl6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszp2wqdm09nn78wfmwn2ffq8uw3cerjdaxjxd8g4fn0wwels9ylace7shl5&#39;&gt;nevent1q…shl5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-01-03&lt;br/&gt;📝 Original message:It is an unfortunate script, but can&amp;#39;t actually&lt;br/&gt;​do&lt;br/&gt; that much&lt;br/&gt;​ it seems​&lt;br/&gt;. The MAX_SCRIPT_ELEMENT_SIZE = 520 Bytes.&lt;br/&gt;​ Thus, it would seem the worst you could do with this would be to&lt;br/&gt;(10000-520*2)*520*2&lt;br/&gt;bytes  ~=~ 10 MB.&lt;br/&gt;&lt;br/&gt;​Much more concerning would be the op_dup/op_cat style bug, which under a&lt;br/&gt;similar script ​would certainly cause out of memory errors :)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;On Mon, Jan 2, 2017 at 4:39 PM, Steve Davis 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 all,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Suppose someone were to use the following pk_script:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [op_2dup, op_2dup, op_2dup, op_2dup, op_2dup, ...(to limit)...,&lt;br/&gt;&amp;gt; op_2dup, op_hash160, &amp;lt;addr_hash&amp;gt;, op_equalverify, op_checksig]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This still seems to be valid AFAICS, and may be a potential attack vector?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks.&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;&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/20170102/91e5e8d8/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170102/91e5e8d8/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:55:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrsn39rhjq47kspcx6a7akka0k65ch8w2e2xmlkm54ea5hrgtdv7czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg8w6xap</id>
    
      <title type="html">📅 Original date posted:2016-10-09 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrsn39rhjq47kspcx6a7akka0k65ch8w2e2xmlkm54ea5hrgtdv7czyqql2w33v6emyvfeyqtkxam7qu8ulm242kkh240hayq3fsxfur5tg8w6xap" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs04kcfr8f2whqk35hgw245qnt9fuas78xeecy8ux46zcfujkvdcnczx2ytr&#39;&gt;nevent1q…2ytr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-10-09&lt;br/&gt;📝 Original message:Hi bitcoin-dev,&lt;br/&gt;&lt;br/&gt;I&amp;#39;m well aware that discussion of moderation on bitcoin-dev is&lt;br/&gt;discouraged*. However, I think that we should, as a year of moderation&lt;br/&gt;approaches, discuss openly as a community what the impact of such policy&lt;br/&gt;has been. Making such a post now is timely given that people will have the&lt;br/&gt;opportunity to discuss in-person as well as online as Scaling Bitcoin is&lt;br/&gt;currently underway. On the suggestion of others, I&amp;#39;ve also CC&amp;#39;d&lt;br/&gt;bitcoin-discuss on this message.&lt;br/&gt;&lt;br/&gt;Below, I&amp;#39;ll share some of my own personal thoughts as a starter, but would&lt;br/&gt;love to hear others feelings as well.&lt;br/&gt;&lt;br/&gt;For me, the bitcoin-dev mailing list was a place where I started&lt;br/&gt;frequenting to learn a lot about bitcoin and the development process and&lt;br/&gt;interact with the community. Since moderation has begun, it seems that the&lt;br/&gt;messages/day has dropped drastically. This may be a nice outcome overall&lt;br/&gt;for our sanity, but I think that it has on the whole made the community&lt;br/&gt;less accessible. I&amp;#39;ve heard from people (a &amp;gt; 1 number, myself included)&lt;br/&gt;that they now self-censor because they think they will put a lot of work&lt;br/&gt;into their email only for it to get moderated away as trolling/spam. Thus,&lt;br/&gt;while we may not observe a high rate of moderated posts, it does mean the&lt;br/&gt;&amp;#34;chilling effect&amp;#34; of moderation still manifests -- I think that people not&lt;br/&gt;writing emails because they think it may be moderated reduces the rate of&lt;br/&gt;people writing emails which is a generally valuable thing as it offers&lt;br/&gt;people a vehicle through which they try to think through and communicate&lt;br/&gt;their ideas in detail.&lt;br/&gt;&lt;br/&gt;Overall, I think that at the time that moderation was added to the list, it&lt;br/&gt;was probably the right thing to do. We&amp;#39;re in a different place as a&lt;br/&gt;community now, so I feel we should attempt to open up this valuable&lt;br/&gt;communication channel once again. My sentiment is that we enacted&lt;br/&gt;moderation to protect a resource that we all felt was valuable, but in the&lt;br/&gt;process, the value of the list was damaged, but not irreparably so.&lt;br/&gt;&lt;br/&gt;Best,&lt;br/&gt;&lt;br/&gt;Jeremy&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;* From the email introducing the bitcoin-dev moderation policy, &amp;#34;Generally&lt;br/&gt;discouraged: shower thoughts, wild speculation, jokes, &#43;1s, non-technical&lt;br/&gt;bitcoin issues, rehashing settled topics without new data, moderation&lt;br/&gt; concerns.&amp;#34;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;--&lt;br/&gt;@JeremyRubin &amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://twitter.com/JeremyRubin&amp;gt&#34;&gt;https://twitter.com/JeremyRubin&amp;gt&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/20161009/ea20481e/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161009/ea20481e/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:53:50&#43;02:00</updated>
  </entry>

</feed>