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




  <entry>
    <id>https://nostr.ae/nevent1qqspk3p788vek2chwqq3jy70vvvetcrs7rg08za0wyh0l43ksr34ktgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjv2zzct</id>
    
      <title type="html">📅 Original date posted:2022-07-11 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspk3p788vek2chwqq3jy70vvvetcrs7rg08za0wyh0l43ksr34ktgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjv2zzct" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9uhn70rxmtndhrtx75m32e9ss8ws6a9pdk0kvvseylgmel0t749gqzr0t8&#39;&gt;nevent1q…r0t8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-11&lt;br/&gt;📝 Original message:On Mon, Jul 11, 2022 at 2:53 PM Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The only type of fee-smoothing scheme that is feasible is to smooth an&lt;br/&gt;&amp;gt; entirely&lt;br/&gt;&amp;gt; separate category of fees that are made mandatory. For example, you could&lt;br/&gt;&amp;gt; achieve the economic impact of inflation by having a fixed value*time&lt;br/&gt;&amp;gt; based fee&lt;br/&gt;&amp;gt; that goes to timelocked anyone-can-spend outputs in the coinbase to push&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; fee forward to other miners.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not sure what the implications would be of charging coins for moving&lt;br/&gt;based on their value times how long since they last moved would be (I&lt;br/&gt;*think* that&amp;#39;s what you&amp;#39;re suggesting). It isn&amp;#39;t obviously bad, but feels&lt;br/&gt;weird to me.&lt;br/&gt;&lt;br/&gt;That said, a scheme which would work would be to have a fixed minimum fee&lt;br/&gt;of satoshis/vbyte which is required to be repaid out by the miner into a&lt;br/&gt;pool and they get back a fixed fraction of what was in that pool. The pool&lt;br/&gt;could simply be a rolling coin which keeps the balance. That&amp;#39;s still a bit&lt;br/&gt;ugly but doesn&amp;#39;t lessen block size significantly, is fairly coherent, and&lt;br/&gt;is a soft fork. It&amp;#39;s the best emergency measure I&amp;#39;m aware of.&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/20220711/519eb7bd/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220711/519eb7bd/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:11:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspl7mjf5dcqlvzdqkkalauzggvt7aduylzk2d5ev7k45tgh7t97fszyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj8k0j39</id>
    
      <title type="html">📅 Original date posted:2022-07-11 📝 Original message:If ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspl7mjf5dcqlvzdqkkalauzggvt7aduylzk2d5ev7k45tgh7t97fszyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj8k0j39" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8ysmpfddqgramsasphk85rdvcxpn8wa8fgu2h7c4gtpm5kutw3eswvcyxw&#39;&gt;nevent1q…cyxw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-11&lt;br/&gt;📝 Original message:If transaction fees came in at an even rate over time all at the exact same&lt;br/&gt;level then they work fine for security, acting similarly to fixed block&lt;br/&gt;rewards. Unfortunately that isn&amp;#39;t how it works in the real world. There&amp;#39;s a&lt;br/&gt;very well established day/night cycle with fees going to zero overnight and&lt;br/&gt;even longer gaps on weekends and holidays. If in the future Bitcoin is&lt;br/&gt;entirely dependent on fees for security (scheduled very strongly) and this&lt;br/&gt;pattern keeps up (overwhelmingly likely) then this is going to become a&lt;br/&gt;serious problem.&lt;br/&gt;&lt;br/&gt;What&amp;#39;s likely to happen is that at first there will simply be no or very&lt;br/&gt;few blocks mined overnight. There are likely to be some, as miners at first&lt;br/&gt;turn off their mining rigs completely overnight then adopt the more&lt;br/&gt;sophisticated strategy of waiting until there are enough fees in the&lt;br/&gt;mempool to warrant attempting to make a block and only then doing it.&lt;br/&gt;Unfortunately the gaming doesn&amp;#39;t end there. Eventually the miners with&lt;br/&gt;lower costs of operation will figure out that they can collectively reorg&lt;br/&gt;the last hour (or some time period) of the day overnight and this will be&lt;br/&gt;profitable. That&amp;#39;s likely to cause the miners with more expensive&lt;br/&gt;operations to stop attempting mining the last hour of the day preemptively.&lt;br/&gt;&lt;br/&gt;What happens after that I&amp;#39;m not sure. There are a small enough number of&lt;br/&gt;miners with a quirky enough distribution of costs of operation and&lt;br/&gt;profitability that the dynamic is heavily dependent on those specifics, but&lt;br/&gt;the beginnings of a slippery slope to a mining cabal which reorgs everyone&lt;br/&gt;else out of existence and eventually 51% attacks the whole thing have&lt;br/&gt;begun. It even gets worse than that because once there&amp;#39;s a cabal&lt;br/&gt;aggressively reorging anyone else out when they make a block other miners&lt;br/&gt;will shut down and rapidly lose the ability to quickly spin up again, so&lt;br/&gt;the threshold needed for that 51% attack will keep going down.&lt;br/&gt;&lt;br/&gt;In short, relying completely on transaction fees for security is likely to&lt;br/&gt;be a disaster. What we can say from existing experience is that having&lt;br/&gt;transaction fees be about 10% of rewards on average works well. It&amp;#39;s enough&lt;br/&gt;to incentivize collecting fees but not so much that it makes incentives get&lt;br/&gt;all weird. 90% transaction fees is probably very bad. 50% works but runs&lt;br/&gt;the risk of spikes getting too high.&lt;br/&gt;&lt;br/&gt;There are a few possible approaches to fixes. One would be to drag most of&lt;br/&gt;east asia eastward to a later time zone thus smoothing out the day/night&lt;br/&gt;cycle but that&amp;#39;s probably unrealistic. Another would be to hard fork in&lt;br/&gt;fixed rewards in perpetuity, which is slightly less unrealistic but still&lt;br/&gt;extremely problematic.&lt;br/&gt;&lt;br/&gt;Much more actionable are measures which smooth out fees over time. Having&lt;br/&gt;wallets opportunistically collect their dust during times of low&lt;br/&gt;transaction fees would help and would save users on fees. Also making UX&lt;br/&gt;which clarifies when things are likely to take a day or week but that it&amp;#39;s&lt;br/&gt;reliable would be a reasonable thing to do, but users unfortunately are&lt;br/&gt;very averse to transactions taking a while.&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/20220711/27bad65b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220711/27bad65b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:11:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspjz5nkqz72pfvuaahz3v4zvl7w0xhy3dwfcv56qz7xy5sahsmfnczyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjqg3vpu</id>
    
      <title type="html">📅 Original date posted:2022-07-07 📝 Original message:Part ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspjz5nkqz72pfvuaahz3v4zvl7w0xhy3dwfcv56qz7xy5sahsmfnczyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjqg3vpu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswawadjqh7f57jgrh93s76qr26nlje6cf6exvfwyacsaz3dxw8eggw6demd&#39;&gt;nevent1q…demd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-07&lt;br/&gt;📝 Original message:Part of the rules of my challenge is that the &amp;#39;new&amp;#39; words need to be in the&lt;br/&gt;same pool as the &amp;#39;old&amp;#39; words, so any ordering is okay. Without that&lt;br/&gt;requirement it&amp;#39;s mathematically very straightforward.&lt;br/&gt;&lt;br/&gt;On Thu, Jul 7, 2022 at 10:52 AM Pavol Rusnak &amp;lt;stick at satoshilabs.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; There is. Just encode the index of permutation used to scramble the&lt;br/&gt;&amp;gt; otherwise sorted list. For 12 words you need to store 12! = ~32 bits so 3&lt;br/&gt;&amp;gt; words should be enough.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Repetitions make this more difficult, though.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Thu 7. 7. 2022 at 19:41, Bram Cohen via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; On Thu, Jul 7, 2022 at 7:43 AM Anton Shevchenko via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I made a python implementation for a different mnemonic encoding. The&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; encoding requires user to remember words but not the order of those words.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The code is open (MIT license) at &lt;a href=&#34;https://github.com/sancoder/noomnem&#34;&gt;https://github.com/sancoder/noomnem&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Thanks Anton. There&amp;#39;s an interesting mathematical question of whether&lt;br/&gt;&amp;gt;&amp;gt; it&amp;#39;s possible to make a code like this which always uses the BIP-39 words&lt;br/&gt;&amp;gt;&amp;gt; for the same key as part of its encoding, basically adding a few words as&lt;br/&gt;&amp;gt;&amp;gt; error correction in case the order is lost or confused. If the BIP-39&lt;br/&gt;&amp;gt;&amp;gt; contains a duplicate you can add an extra word.&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; Best Regards / S pozdravom,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Pavol &amp;#34;stick&amp;#34; Rusnak&lt;br/&gt;&amp;gt; Co-Founder, SatoshiLabs&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/20220707/72c4a5e7/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220707/72c4a5e7/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:11:15&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdakaa2mrt7pd46elcx9u03g4dfkpj9seadpqd6n0dh66vteh9uyqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjac6xj0</id>
    
      <title type="html">📅 Original date posted:2022-07-07 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdakaa2mrt7pd46elcx9u03g4dfkpj9seadpqd6n0dh66vteh9uyqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjac6xj0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswt7au4et2x87lcmelz5qfk3f5md8f0znul60n47v8lp5qv04nueq0m22s9&#39;&gt;nevent1q…22s9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-07-07&lt;br/&gt;📝 Original message:On Thu, Jul 7, 2022 at 7:43 AM Anton Shevchenko 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 made a python implementation for a different mnemonic encoding. The&lt;br/&gt;&amp;gt; encoding requires user to remember words but not the order of those words.&lt;br/&gt;&amp;gt; The code is open (MIT license) at &lt;a href=&#34;https://github.com/sancoder/noomnem&#34;&gt;https://github.com/sancoder/noomnem&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Thanks Anton. There&amp;#39;s an interesting mathematical question of whether it&amp;#39;s&lt;br/&gt;possible to make a code like this which always uses the BIP-39 words for&lt;br/&gt;the same key as part of its encoding, basically adding a few words as error&lt;br/&gt;correction in case the order is lost or confused. If the BIP-39 contains a&lt;br/&gt;duplicate you can add an extra word.&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/20220707/557f4041/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220707/557f4041/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:11:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8kefng2q5rjzlh0xtzgum8k8d7jz8z2s54t2kg24dw6uuemudlngzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj73z83k</id>
    
      <title type="html">📅 Original date posted:2022-03-09 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8kefng2q5rjzlh0xtzgum8k8d7jz8z2s54t2kg24dw6uuemudlngzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj73z83k" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrj0duj27alfddlays9pxsr6ft7vmaprcnc9pzwfx9gkp2x0z9klg9z2t3p&#39;&gt;nevent1q…2t3p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-09&lt;br/&gt;📝 Original message:On Mon, Mar 7, 2022 at 5:27 PM Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; One way to match the way bitcoin do things, you could have the &amp;#34;list of&lt;br/&gt;&amp;gt; extra conditions&amp;#34; encoded explicitly in the transaction via the annex,&lt;br/&gt;&amp;gt; and then check the extra conditions when the script is executed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;The conditions are already basically what&amp;#39;s in transactions. I think the&lt;br/&gt;only thing missing is the assertion about one&amp;#39;s own id, which could be&lt;br/&gt;added in by, in addition to passing the scriptpubkey the transaction it&amp;#39;s&lt;br/&gt;part of, also passing in the index of inputs which it itself is.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If you&amp;#39;re doing everything from scratch it&amp;#39;s cleaner to go with the coin&lt;br/&gt;&amp;gt; &amp;gt; set model, but retrofitting onto existing Bitcoin it may be best to leave&lt;br/&gt;&amp;gt; &amp;gt; the UTXO model intact and compensate by adding a bunch more opcodes which&lt;br/&gt;&amp;gt; &amp;gt; are special to parsing Bitcoin transactions. The transaction format&lt;br/&gt;&amp;gt; itself&lt;br/&gt;&amp;gt; &amp;gt; can be mostly left alone but to enable some of the extra tricks (mostly&lt;br/&gt;&amp;gt; &amp;gt; implementing capabilities) it&amp;#39;s probably a good idea to make new&lt;br/&gt;&amp;gt; &amp;gt; conventions for how a transaction can have advisory information which&lt;br/&gt;&amp;gt; &amp;gt; specifies which of the inputs to a transaction is the parent of a&lt;br/&gt;&amp;gt; specific&lt;br/&gt;&amp;gt; &amp;gt; output and also info which is used for communication between the UTXOs&lt;br/&gt;&amp;gt; in a&lt;br/&gt;&amp;gt; &amp;gt; transaction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think the parent/child coin relationship is only interesting when&lt;br/&gt;&amp;gt; &amp;#34;unrelated&amp;#34; spends can assert that the child coin is being created -- ie&lt;br/&gt;&amp;gt; things along the lines of the &amp;#34;transaction sponsorship&amp;#34; proposal. My&lt;br/&gt;&amp;gt; feeling is that complicates the mempool a bit much, so is best left for&lt;br/&gt;&amp;gt; later, if done at all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;The parent/child relationship is mostly about implementing capabilities.&lt;br/&gt;There&amp;#39;s this fundamental trick, sort of the ollie of UTXO programming,&lt;br/&gt;where to make a coin have a capability you have a wrapper around an inner&lt;br/&gt;puzzle for it where the wrapper asserts &amp;#39;my parent must either be the&lt;br/&gt;unique originator of this capability or also have this same wrapper&amp;#39; and it&lt;br/&gt;enforces that by being given a reveal of its parent and told/asserting its&lt;br/&gt;own id which it can derive from that parent. The main benefit of the coin&lt;br/&gt;set approach over UTXO is that it reduces the amount of stuff to be&lt;br/&gt;revealed and string mangling involved in the parentage check.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (I think the hard part of managing the extra conditions is mostly&lt;br/&gt;&amp;gt; in keeping it efficient to manage the mempool and construct the most&lt;br/&gt;&amp;gt; profitable blocks/bundles, rather than where the data goes)&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Not sure what you mean by this. Conditions map fairly closely with what&amp;#39;s&lt;br/&gt;in Bitcoin transactions and are designed so to be monotonic and so the&lt;br/&gt;costs and fees are known up front. The only way two transactions can&lt;br/&gt;conflict with each other is if they both try to spend the same coin.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; They&amp;#39;re radically different approaches and&lt;br/&gt;&amp;gt; &amp;gt; it&amp;#39;s hard to see how they mix. Everything in lisp is completely&lt;br/&gt;&amp;gt; sandboxed,&lt;br/&gt;&amp;gt; &amp;gt; and that functionality is important to a lot of things, and it&amp;#39;s really&lt;br/&gt;&amp;gt; &amp;gt; normal to be given a reveal of a scriptpubkey and be able to rely on your&lt;br/&gt;&amp;gt; &amp;gt; parsing of it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The above prevents combining puzzles/solutions from multiple coin spends,&lt;br/&gt;&amp;gt; but I don&amp;#39;t think that&amp;#39;s very attractive in bitcoin&amp;#39;s context, the way&lt;br/&gt;&amp;gt; it is for chia. I don&amp;#39;t think it loses much else?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Making something lisp-based be a completely alternative script type would&lt;br/&gt;also be my preferred approach.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; A nice side benefit of sticking with the UTXO model is that the soft fork&lt;br/&gt;&amp;gt; &amp;gt; hook can be that all unknown opcodes make the entire thing automatically&lt;br/&gt;&amp;gt; &amp;gt; pass.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think that works well if you want to allow the spender (the&lt;br/&gt;&amp;gt; puzzle solution) to be able to use opcodes introduced in a soft-fork&lt;br/&gt;&amp;gt; (eg, for graftroot-like behaviour)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;This is already the approach to soft forking in Bitcoin script and I don&amp;#39;t&lt;br/&gt;see anything wrong with it. You shouldn&amp;#39;t write scripts using previously&lt;br/&gt;unrecognized opcodes until after they&amp;#39;ve been soft forked into having real&lt;br/&gt;functionality, and if you do that and accidentally write an anyonecanspend&lt;br/&gt;that&amp;#39;s your own fault.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Having third parties be able to link their spends to yours complicates&lt;br/&gt;&amp;gt; mempool behaviour a fair bit (see the discussions on pinning wrt&lt;br/&gt;&amp;gt; lightning txs -- and that&amp;#39;s only with direct participants being able to&lt;br/&gt;&amp;gt; link transactions).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Bitcoin already has that with spending of transaction outputs, and Chia&amp;#39;s&lt;br/&gt;mempool doesn&amp;#39;t currently let transactions depend on other transactions in&lt;br/&gt;the mempool. If you do have that sort of dependency, you should have to&lt;br/&gt;smush both transactions together to make a single larger transaction and&lt;br/&gt;make it have enough of a fee to replace the smaller one.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m pretty skeptical about having a database of large script snippets&lt;br/&gt;&amp;gt; that will hopefully be reused in the future.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;That database is just the list of old blocks which can be dredged up to&lt;br/&gt;have code pulled out of them.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; In chia the &amp;#34;scriptPubKey&amp;#34; is the hash of a lisp program, and when you&lt;br/&gt;&amp;gt; create a new coin, the &amp;#34;scriptPubKey&amp;#34; of the newly generated coin is&lt;br/&gt;&amp;gt; also the output of a lisp program. So writing a quine gets you general&lt;br/&gt;&amp;gt; recursive covenants in a pretty straight forward way, as I understand it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Usually you don&amp;#39;t quite write a quine because you can be passed in your own&lt;br/&gt;code and assert your own id derived from it, but that&amp;#39;s the basic idea. You&lt;br/&gt;need to validate your own id anyway when you have a capability.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Rather than a &amp;#34;transaction&amp;#34; containing &amp;#34;inputs/outputs&amp;#34;, chia has spend&lt;br/&gt;&amp;gt; bundles that spend and create coins; and spend bundles can be merged&lt;br/&gt;&amp;gt; together, so that a block only has a single spend bundle. That spend&lt;br/&gt;&amp;gt; bundle joins all the puzzles (the programs that, when hashed match&lt;br/&gt;&amp;gt; the scriptPubKey) and solutions (scriptSigs) for the coins being spent&lt;br/&gt;&amp;gt; together.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I often refer to spend bundles as &amp;#39;transactions&amp;#39;. Hope that isn&amp;#39;t too&lt;br/&gt;confusing. They serve the same function in the mempool.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I /think/ the compression hook would be to allow you to have the puzzles&lt;br/&gt;&amp;gt; be (re)generated via another lisp program if that was more efficient&lt;br/&gt;&amp;gt; than just listing them out.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;It literally has a lisp program called the generator which returns the list&lt;br/&gt;of puzzle reveals and transactions. The simplest version of that program is&lt;br/&gt;to return a quoted list.&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/20220308/14bf1b2c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220308/14bf1b2c/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw2cneynz66x7xml465hay27rjgq0kjflnlgyetzfnm2jvkgusp7qzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjs4705u</id>
    
      <title type="html">📅 Original date posted:2022-03-16 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw2cneynz66x7xml465hay27rjgq0kjflnlgyetzfnm2jvkgusp7qzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjs4705u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr8d65q25nnamtkk6ze6cny2dk6eczrkd8sllplxkv5pkzdrczdxc8ng9dn&#39;&gt;nevent1q…g9dn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-16&lt;br/&gt;📝 Original message:On Wed, Mar 9, 2022 at 6:30 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I am pointing out that:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * We want to save bytes by having multiple inputs of a transaction use the&lt;br/&gt;&amp;gt; same single signature (i.e. sigagg).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; is not much different from:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * We want to save bytes by having multiple inputs of a transaction use the&lt;br/&gt;&amp;gt; same `scriptPubKey` template.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Fair point. In the past Bitcoin has been resistant to such things because&lt;br/&gt;for example reusing pubkeys can save you from having to separately pay for&lt;br/&gt;the reveals of all of them but letting people get credit for that&lt;br/&gt;incentivizes key reuse which isn&amp;#39;t such a great thing.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; For example you might have multiple HTLCs, with mostly the same code&lt;br/&gt;&amp;gt; except for details like who the acceptor and offerrer are, exact hash, and&lt;br/&gt;&amp;gt; timelock, and you could claim multiple HTLCs in a single tx and feed the&lt;br/&gt;&amp;gt; details separately but the code for the HTLC is common to all of the HTLCs.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; You do not even need to come from the same protocol if multiple&lt;br/&gt;&amp;gt; protocols use the same code for implementing HTLC.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; HTLCs, at least in Chia, have embarrassingly little code in them. Like,&lt;br/&gt;&amp;gt; so little that there&amp;#39;s almost nothing to compress.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In Bitcoin at least an HTLC has, if you remove the `OP_PUSH`es, by my&lt;br/&gt;&amp;gt; count, 13 bytes.&lt;br/&gt;&amp;gt; If you have a bunch of HTLCs you want to claim, you can reduce your&lt;br/&gt;&amp;gt; witness data by 13 bytes minus whatever number of bytes you need to&lt;br/&gt;&amp;gt; indicate this.&lt;br/&gt;&amp;gt; That amounts to about 3 vbytes per HTLC, which can be significant enough&lt;br/&gt;&amp;gt; to be worth it (consider that Taproot moving away from encoded signatures&lt;br/&gt;&amp;gt; saves only 9 weight units per signature, i.e. about 2 vbytes).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Oh I see. That&amp;#39;s already extremely small overhead. When you start&lt;br/&gt;optimizing at that level you wind up doing things like pulling all the&lt;br/&gt;HTLCs into the same block to take the overhead of pulling in the template&lt;br/&gt;only once.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Do note that PTLCs remain more space-efficient though, so forget about&lt;br/&gt;&amp;gt; HTLCs and just use PTLCs.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;It makes a lot of sense to make a payment channel system using PTLCs and&lt;br/&gt;eltoo right off the bat but then you wind up rewriting everything from&lt;br/&gt;scratch.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; This does not apply to current Bitcoin since we no longer accept a&lt;br/&gt;&amp;gt; SCRIPT from the spender, we now have a witness stack.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; My mental model of Bitcoin is to pretend that segwit was always there&lt;br/&gt;&amp;gt; and the separation of different sections of data is a semantic quibble.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This is not a semantic quibble --- `witness` contains only the equivalent&lt;br/&gt;&amp;gt; of `OP_PUSH`es, while `scriptSig` can in theory contain non-`OP_PUSH`&lt;br/&gt;&amp;gt; opcodes.&lt;br/&gt;&amp;gt; xref. `1 RETURN`.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;It&amp;#39;s very normal when you&amp;#39;re using lisp for snippets of code to be passed&lt;br/&gt;in as data and then verified and executed. That&amp;#39;s enabled by the extreme&lt;br/&gt;adherence to no side effects.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; This makes me kinda wary of using such covenant features at all, and if&lt;br/&gt;&amp;gt; stuff like `SIGHASH_ANYPREVOUT` or `OP_CHECKTEMPLATEVERIFY` are not added&lt;br/&gt;&amp;gt; but must be reimplemented via a covenant feature, I would be saddened, as I&lt;br/&gt;&amp;gt; now have to contend with the complexity of covenant features and carefully&lt;br/&gt;&amp;gt; check that `SIGHASH_ANYPREVOUT`/`OP_CHECKTEMPLATEVERIFY` were implemented&lt;br/&gt;&amp;gt; correctly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Even the &amp;#39;standard format&amp;#39; transaction which supports taproot and graftroot&lt;br/&gt;is implemented in CLVM. The benefit of this approach is that new&lt;br/&gt;functionality can be implemented and deployed immediately rather than&lt;br/&gt;having to painstakingly go through a soft fork deployment for each thing.&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/20220315/eeccf5c8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220315/eeccf5c8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqk25yq8ykwdwfh6n34qe8atf32rdl73tee7ctxtgdrejuwetad0qzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj4ja9ny</id>
    
      <title type="html">📅 Original date posted:2022-03-19 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqk25yq8ykwdwfh6n34qe8atf32rdl73tee7ctxtgdrejuwetad0qzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj4ja9ny" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrn0pe8cyuhl2dntpjhgg439t0xplz0aeu6tyzjcmt3rekx9nnpgqmtdlgt&#39;&gt;nevent1q…dlgt&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-19&lt;br/&gt;📝 Original message:On Wed, Mar 16, 2022 at 7:54 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; My point is that in the past we were willing to discuss the complicated&lt;br/&gt;&amp;gt; crypto math around cross-input sigagg in order to save bytes, so it seems&lt;br/&gt;&amp;gt; to me that cross-input compression of puzzles/solutions at least merits a&lt;br/&gt;&amp;gt; discussion, since it would require a lot less heavy crypto math, and *also*&lt;br/&gt;&amp;gt; save bytes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;When using BLS signatures all that math is much simpler. You use a single&lt;br/&gt;aggregated signature and always aggregate everything all the time.&lt;br/&gt;&lt;br/&gt;I think there are two costs here:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; * Cost of bytes to transmit over the network.&lt;br/&gt;&amp;gt; * Cost of CPU load.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;There are three potential costs: CPU, bytes, and making outputs. In Chia&lt;br/&gt;it&amp;#39;s balanced so that the costs to a standard transaction in all three&lt;br/&gt;buckets are roughly the same. In Bitcoin the three are implicitly tied to&lt;br/&gt;each other by design which makes vbytes work okayish for Bitcoin Script as&lt;br/&gt;it exists today.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; It seems to me that lisp-generating-lisp compression would reduce the cost&lt;br/&gt;&amp;gt; of bytes transmitted, but increase the CPU load (first the metaprogram&lt;br/&gt;&amp;gt; runs, and *then* the produced program runs).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Nah, CPU costs are dominated by signatures. Simple operations like applying&lt;br/&gt;some parameters to a template don&amp;#39;t add much.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Not being a mathist, I have absolutely no idea, but: at least as I&lt;br/&gt;&amp;gt; understood from the original mimblewimble.txt from Voldemort, BLS&lt;br/&gt;&amp;gt; signatures had an additional assumption, which I *think* means&lt;br/&gt;&amp;gt; &amp;#34;theoretically less secure than SECP256K1 Schnorr / ECDSA&amp;#34;.&lt;br/&gt;&amp;gt; Is my understanding correct?&lt;br/&gt;&amp;gt; And if so, how theoretical would that be?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;It includes some an extra cryptographic assumption but it&amp;#39;s extremely&lt;br/&gt;theoretical, having more to do with guessing what size of group provides&lt;br/&gt;comparable security in number of bits than whether the whole approach is in&lt;br/&gt;question. BLS12-381 is fairly conservative.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; PTLC signatures have the very nice property of being indistinguishable&lt;br/&gt;&amp;gt; from non-PTLC signatures to anyone without the adaptor, and I think&lt;br/&gt;&amp;gt; privacy-by-default should be what we encourage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;You do lose out on that when you aggregate.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m not sure that a &amp;#34;covenant language implementation&amp;#34; would necessarily&lt;br/&gt;&amp;gt; &amp;gt; be &amp;#34;that&amp;#34; complicated. And if so, having a DSL for covenants could,&lt;br/&gt;&amp;gt; &amp;gt; at least in theory, make for a much simpler implementation of&lt;br/&gt;&amp;gt; &amp;gt; ANYPREVOUT/CTV/TLUV/EVICT/etc than doing it directly in C&#43;&#43;, which&lt;br/&gt;&amp;gt; &amp;gt; might mean those things are less likely to have &amp;#34;weird surprises&amp;#34; rather&lt;br/&gt;&amp;gt; &amp;gt; than more.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;lt;rant&amp;gt;&lt;br/&gt;&amp;gt; DSLs?&lt;br/&gt;&amp;gt; Domain-specific languages?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Bitcoin Script is already a domain specific language, and the point of&lt;br/&gt;adding in a lisp-family language would be to make it so that covenants and&lt;br/&gt;capabilities can be implemented in the same language as is used for regular&lt;br/&gt;coin scripting. The idea is to get off the treadmill of soft forking in&lt;br/&gt;language features every time new functionality is wanted and make it&lt;br/&gt;possible to implement all that on chain.&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/20220319/9f946703/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220319/9f946703/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs92w70gpkk4ykhaxuqk9kmgjj0ek46xextgsmne9aaqspca6gghwqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjawzfvn</id>
    
      <title type="html">📅 Original date posted:2022-03-16 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs92w70gpkk4ykhaxuqk9kmgjj0ek46xextgsmne9aaqspca6gghwqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjawzfvn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfdwexxcuul87d9xzvdlrmclfzc8z4mvr4cqxthmecqhqp62q7rqqsse8d4&#39;&gt;nevent1q…e8d4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-16&lt;br/&gt;📝 Original message:On Thu, Mar 10, 2022 at 8:46 PM Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Note that PTLCs aren&amp;#39;t really Chia-friendly, both because chia doesn&amp;#39;t&lt;br/&gt;&amp;gt; have secp256k1 operations in the first place, but also because you can&amp;#39;t&lt;br/&gt;&amp;gt; do a scriptless-script because the information you need to extract&lt;br/&gt;&amp;gt; is lost when signatures are non-interactively aggregated via BLS --&lt;br/&gt;&amp;gt; so that adds an expensive extra ECC operation rather than reusing an&lt;br/&gt;&amp;gt; op you&amp;#39;re already paying for (scriptless script PTLCs) or just adding&lt;br/&gt;&amp;gt; a cheap hash operation (HTLCs).&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;The CLVM currently supports BLS12-381 group 1 point operations which it&lt;br/&gt;uses to support taproot which I think is enough to support PTLCs but&lt;br/&gt;obviously isn&amp;#39;t compatible with secp. In the future there will likely be a&lt;br/&gt;soft fork to include a complete set of BLS12-381 operations mostly to&lt;br/&gt;support ZK implementation.&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/20220315/497a7250/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220315/497a7250/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr7w0jpy0kmggnlyv3wlyyjz0724th2lmprx4v8jy4ncnmtrxldkczyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjk5kh9q</id>
    
      <title type="html">📅 Original date posted:2022-03-07 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr7w0jpy0kmggnlyv3wlyyjz0724th2lmprx4v8jy4ncnmtrxldkczyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjk5kh9q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2g5t44592sp35enqkczrm40y8tvnq3p7crwxpn0zvq3zln9yneus2l9hr0&#39;&gt;nevent1q…9hr0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-07&lt;br/&gt;📝 Original message:&amp;gt;&lt;br/&gt;&amp;gt; After looking into it, I actually think chia lisp [1] gets pretty much all&lt;br/&gt;&amp;gt; the major design decisions pretty much right. There are obviously a few&lt;br/&gt;&amp;gt; changes needed given the differences in design between chia and bitcoin:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - having secp256k1 signatures (and curve operations), instead of&lt;br/&gt;&amp;gt;    BLS12-381 ones&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - adding tx introspection instead of having bundle-oriented CREATE_COIN,&lt;br/&gt;&amp;gt;    and CREATE/ASSERT results [10]&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Bitcoin uses the UTXO model as opposed to Chia&amp;#39;s Coin Set model. While&lt;br/&gt;these are close enough that it&amp;#39;s often explained as Chia uses the UTXO&lt;br/&gt;model but that isn&amp;#39;t technically true. Relevant to the above comment is&lt;br/&gt;that in the UTXO model transactions get passed to a scriptpubkey and it&lt;br/&gt;either assert fails or it doesn&amp;#39;t, while in the coin set model each puzzle&lt;br/&gt;(scriptpubkey) gets run and either assert fails or returns a list of extra&lt;br/&gt;conditions it has, possibly including timelocks and creating new coins,&lt;br/&gt;paying fees, and other things.&lt;br/&gt;&lt;br/&gt;If you&amp;#39;re doing everything from scratch it&amp;#39;s cleaner to go with the coin&lt;br/&gt;set model, but retrofitting onto existing Bitcoin it may be best to leave&lt;br/&gt;the UTXO model intact and compensate by adding a bunch more opcodes which&lt;br/&gt;are special to parsing Bitcoin transactions. The transaction format itself&lt;br/&gt;can be mostly left alone but to enable some of the extra tricks (mostly&lt;br/&gt;implementing capabilities) it&amp;#39;s probably a good idea to make new&lt;br/&gt;conventions for how a transaction can have advisory information which&lt;br/&gt;specifies which of the inputs to a transaction is the parent of a specific&lt;br/&gt;output and also info which is used for communication between the UTXOs in a&lt;br/&gt;transaction.&lt;br/&gt;&lt;br/&gt;But one could also make lisp-generated UTXOs be based off transactions&lt;br/&gt;which look completely trivial and have all their important information be&lt;br/&gt;stored separately in a new vbytes area. That works but results in a bit of&lt;br/&gt;a dual identity where some coins have both an old style id and a new style&lt;br/&gt;id which gunks up what&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  - serialization seems to be a bit verbose -- 100kB of serialized clvm&lt;br/&gt;&amp;gt;    code from a random block gzips to 60kB; optimising the serialization&lt;br/&gt;&amp;gt;    for small lists, and perhaps also for small literal numbers might be&lt;br/&gt;&amp;gt;    a feasible improvement; though it&amp;#39;s not clear to me how frequently&lt;br/&gt;&amp;gt;    serialization size would be the limiting factor for cost versus&lt;br/&gt;&amp;gt;    execution time or memory usage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;A lot of this is because there&amp;#39;s a hook for doing compression at the&lt;br/&gt;consensus layer which isn&amp;#39;t being used aggressively yet. That one has the&lt;br/&gt;downside that the combined cost of transactions can add up very&lt;br/&gt;nonlinearly, but when you have constantly repeated bits of large&lt;br/&gt;boilerplate it gets close and there isn&amp;#39;t much of an alternative. That said&lt;br/&gt;even with that form of compression maxxed out it&amp;#39;s likely that gzip could&lt;br/&gt;still do some compression but that would be better done in the database and&lt;br/&gt;in wire protocol formats rather than changing the format which is hashed at&lt;br/&gt;the consensus layer.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Pretty much all the opcodes in the first section are directly from chia&lt;br/&gt;&amp;gt; lisp, while all the rest are to complete the &amp;#34;bitcoin&amp;#34; functionality.&lt;br/&gt;&amp;gt; The last two are extensions that are more food for thought than a real&lt;br/&gt;&amp;gt; proposal.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Are you thinking of this as a completely alternative script format or an&lt;br/&gt;extension to bitcoin script? They&amp;#39;re radically different approaches and&lt;br/&gt;it&amp;#39;s hard to see how they mix. Everything in lisp is completely sandboxed,&lt;br/&gt;and that functionality is important to a lot of things, and it&amp;#39;s really&lt;br/&gt;normal to be given a reveal of a scriptpubkey and be able to rely on your&lt;br/&gt;parsing of it.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; There&amp;#39;s two ways to think about upgradability here; if someday we want&lt;br/&gt;&amp;gt; to add new opcodes to the language -- perhaps something to validate zero&lt;br/&gt;&amp;gt; knowledge proofs or calculate sha3 or use a different ECC curve, or some&lt;br/&gt;&amp;gt; way to support cross-input signature aggregation, or perhaps it&amp;#39;s just&lt;br/&gt;&amp;gt; that some snippets are very widely used and we&amp;#39;d like to code them in&lt;br/&gt;&amp;gt; C&#43;&#43; directly so they validate quicker and don&amp;#39;t use up as much block&lt;br/&gt;&amp;gt; weight. One approach is to just define a new version of the language&lt;br/&gt;&amp;gt; via the tapleaf version, defining new opcodes however we like.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;A nice side benefit of sticking with the UTXO model is that the soft fork&lt;br/&gt;hook can be that all unknown opcodes make the entire thing automatically&lt;br/&gt;pass.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The other is to use the &amp;#34;softfork&amp;#34; opcode -- chia defines it as:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   (softfork cost code)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; though I think it would probably be better if it were&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;   (softfork cost version code)&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Since softfork has to date never been used that second parameter is&lt;br/&gt;technically completely ignored and could be anything at all. Most likely a&lt;br/&gt;convention including some kind of version information will be created the&lt;br/&gt;first time it&amp;#39;s used. Also Chia shoves total cost into blocks at the&lt;br/&gt;consensus layer out of an abundance of caution although that isn&amp;#39;t&lt;br/&gt;technically necessary.&lt;br/&gt;&lt;br/&gt;[10] [9] The CREATE/ASSERT bundling stuff is interesting; and could be&lt;br/&gt;&amp;gt;     used to achieve functionality like the &amp;#34;transaction sponsorship&amp;#34;&lt;br/&gt;&amp;gt;     stuff. It doesn&amp;#39;t magically solve the issues with maintaining the&lt;br/&gt;&amp;gt;     mempool and using that to speed up block acceptance, though, and&lt;br/&gt;&amp;gt;     the chia chain has apparently suffered from mempool-flooding attacks&lt;br/&gt;&amp;gt;     recently [11] so I don&amp;#39;t think they&amp;#39;ve solved the broader problem,&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Chia&amp;#39;s approach to transaction fees is essentially identical to Bitcoin&amp;#39;s&lt;br/&gt;although a lot fewer things in the ecosystem support fees due to a lack of&lt;br/&gt;having needed it yet. I don&amp;#39;t think mempool issues have much to do with&lt;br/&gt;choice of scriptpubkey language. which is mostly about adding in covenants&lt;br/&gt;and capabilities.&lt;br/&gt;&lt;br/&gt;That said, Ethereum does have trivial aggregation of unrelated&lt;br/&gt;transactions, and the expense of almost everything else. There are a bunch&lt;br/&gt;of ways automatic aggregation functionality could be added to coin set&lt;br/&gt;mempools by giving them some understanding of the semantics of some&lt;br/&gt;transactions, but that hasn&amp;#39;t been implemented yet.&lt;br/&gt;&lt;br/&gt;I previously posted some thoughts about this here:&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-December/019722.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-December/019722.html&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/20220306/4ed797aa/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220306/4ed797aa/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:14&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstltrs44y85w74wq3uvwvspxl58gcn46eukwsklhp8hl5v4zs0acqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjgqsxxn</id>
    
      <title type="html">📅 Original date posted:2017-04-10 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstltrs44y85w74wq3uvwvspxl58gcn46eukwsklhp8hl5v4zs0acqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjgqsxxn" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfv92n4gz8kny4hx8v50kacygwhg28y8qvyf8t2gyz6a6y3t5hp2gyl9y2n&#39;&gt;nevent1q…9y2n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-10&lt;br/&gt;📝 Original message:On Sun, Apr 9, 2017 at 11:44 AM, 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;&lt;br/&gt;&amp;gt; Clearly a level-playing field is critical to keeping centralization from&lt;br/&gt;&amp;gt; being a &amp;#34;defining feature&amp;#34; of Bitcoin over the long term.   I&amp;#39;ve heard the&lt;br/&gt;&amp;gt; term &amp;#34;level playing field&amp;#34; bandied about quite a bit.   And it seems to me&lt;br/&gt;&amp;gt; that the risk of state actor control and botnet attacks is less than&lt;br/&gt;&amp;gt; state-actor manipulation of specialized manufacturing of &amp;#34;SHA-256 forever&amp;#34;&lt;br/&gt;&amp;gt; hardware.   Indeed, the reliance on a fairly simple hash seems less and&lt;br/&gt;&amp;gt; less likely a &amp;#34;feature&amp;#34; and more of a baggage.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;Whatever your hashing function the bottleneck for mining will be power.&lt;br/&gt;Equihash and Cuckoo are serious attempts at making custom hardware have no&lt;br/&gt;benefit over commodity hardware, but that&amp;#39;s more about getting rid of&lt;br/&gt;custom hardware manufacturers than it is about mining decentralization,&lt;br/&gt;although arguably if successful it might let botnets back in, which would&lt;br/&gt;improve decentralization. While those have been surprisingly successful at&lt;br/&gt;resisting hardware so far, they might eventually fall as well, and if they&lt;br/&gt;do they&amp;#39;ll have even worse properties of centralizing around a mining&lt;br/&gt;hardware manufacturer than sha256 does.&lt;br/&gt;&lt;br/&gt;It would be much safer to go the other way, to a PoW function whose best&lt;br/&gt;hardware implementation is particularly straightforward and well&lt;br/&gt;understood. In that case it would be best to go with sha3. Sha3 also has&lt;br/&gt;the benefit of using the sponge construction, which makes it particularly&lt;br/&gt;resistant to asciboost-type attacks. It was picked out specifically because&lt;br/&gt;its design from a security standpoint was particularly&lt;br/&gt;confidence-inspiring, and in this case it actually makes a difference.&lt;br/&gt;Arguably you could also go with blake2b, whose 1024 bit block size&lt;br/&gt;completely obviates the asicboost concern entirely by cramming everything&lt;br/&gt;into a single block. That also might have an even simpler design in&lt;br/&gt;hardware than sha3, but a real expert would need to opine on that one.&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/20170410/3ff44513/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170410/3ff44513/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:59:52&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstq849n7rn9exlrgskrv9vh0u6ck29py20eu7m9f02yc6hes6emfgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjdxg4jf</id>
    
      <title type="html">📅 Original date posted:2017-04-07 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstq849n7rn9exlrgskrv9vh0u6ck29py20eu7m9f02yc6hes6emfgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjdxg4jf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsypwx62fh2e9x6rj3xew75a6swpwjn5vfy6ed5c3ndfd96qqfqcesghwj67&#39;&gt;nevent1q…wj67&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-07&lt;br/&gt;📝 Original message:Expanding on this question a bit, it&amp;#39;s optimized for parallel access, but&lt;br/&gt;hard drive access isn&amp;#39;t parallel and memory accesses are very fast, so&lt;br/&gt;shouldn&amp;#39;t the target of optimization be about cramming as much as possible&lt;br/&gt;in memory and minimizing disk accesses?&lt;br/&gt;&lt;br/&gt;On Fri, Apr 7, 2017 at 11:18 AM, Gregory Maxwell via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Apr 6, 2017 at 10:12 PM, Tomas via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;As this&lt;br/&gt;&amp;gt; &amp;gt; solution, reversing the costs of outputs and inputs, seems to have&lt;br/&gt;&amp;gt; &amp;gt; excellent performance characteristics (as shown in the test results),&lt;br/&gt;&amp;gt; &amp;gt; updates to the protocol addressing the UTXO growth, might not be worth&lt;br/&gt;&amp;gt; &amp;gt; considering *protocol improvements*&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;m still lost on this-- AFAICT your proposals long term resource&lt;br/&gt;&amp;gt; requirements are directly proportional to the amount of unspent output&lt;br/&gt;&amp;gt; data, which grows over time at some fraction of the total transaction&lt;br/&gt;&amp;gt; volume (plus the rate of spending which is more or less a constant).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Can you help out my understanding here?&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170407/6a7fb499/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170407/6a7fb499/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:59:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyp9gr49ag0vurm9xuz6p82927k3cz7awyxlyfs54x44nfvtp9t6qzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj7z9u6g</id>
    
      <title type="html">📅 Original date posted:2017-03-29 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyp9gr49ag0vurm9xuz6p82927k3cz7awyxlyfs54x44nfvtp9t6qzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj7z9u6g" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsv3qa5y9pqvr849uctm3kynvqaancz4tq6dg3z346nqdyrmnr47rcskwqvz&#39;&gt;nevent1q…wqvz&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-03-29&lt;br/&gt;📝 Original message:On Tue, Mar 28, 2017 at 9:59 AM, Wang Chun 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;&lt;br/&gt;&amp;gt; The basic idea is, as many of us agree, hard fork is risky and should&lt;br/&gt;&amp;gt; be well prepared. We need a long time to deploy it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Much as it may be appealing to repeal the block size limit now with a grace&lt;br/&gt;period until a replacement is needed in a repeal and replace strategy, it&amp;#39;s&lt;br/&gt;dubious to assume that an idea can be agreed upon later when it can&amp;#39;t be&lt;br/&gt;agreed upon now. Trying to put a time limit on it runs into the possibility&lt;br/&gt;that you&amp;#39;ll find that whatever reasons there were for not having general&lt;br/&gt;agreement on a new setup before still apply, and running into the&lt;br/&gt;embarrassing situation of winding up sticking with the status quo after&lt;br/&gt;much sturm and drang.&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/20170328/e04b8d19/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170328/e04b8d19/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:58:05&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdcrygjkfunqqlhazh60uufkugz7jvuadka6q4dzcsh74v4qf40agzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjhe90zf</id>
    
      <title type="html">📅 Original date posted:2017-02-28 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdcrygjkfunqqlhazh60uufkugz7jvuadka6q4dzcsh74v4qf40agzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjhe90zf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw8f3u7nn709w8l3pvq982zrqr3vn8rdd7axzq8rc9n0gykmhuv4gp8m3zu&#39;&gt;nevent1q…m3zu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-28&lt;br/&gt;📝 Original message:On Tue, Feb 28, 2017 at 8:43 AM, G. Andrew Stone &amp;lt;g.andrew.stone at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But since transactions&amp;#39; prevouts are not specified by [block height, tx&lt;br/&gt;&amp;gt; index, output index] or by TXO index, I don&amp;#39;t understand how an insertion&lt;br/&gt;&amp;gt; ordered TXO tree can result in efficient lookups.  Can you help me&lt;br/&gt;&amp;gt; understand this?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;You have to have a lookup table going from prevouts to txo index. Lookups&lt;br/&gt;on that are relatively fast because looking up things in a hashtable is a&lt;br/&gt;single cache miss, while looking up things in a tree is logarithmic cache&lt;br/&gt;misses.&lt;br/&gt;&lt;br/&gt;The purported benefit of using txout is that because recent things are&lt;br/&gt;spent much more than old things, there&amp;#39;s a lot of clustering of updates. If&lt;br/&gt;you update two things near each other they share the top branches of&lt;br/&gt;updates in the tree, resulting in less hashing and cache misses. But since&lt;br/&gt;everything is log scale I suspect such benefits are small. My guess is&lt;br/&gt;transaction ordering has much larger potential from compression because you&lt;br/&gt;cram information about lots of things into a single leaf node because they&lt;br/&gt;have very small diffs from each other. That said, those benefits are also&lt;br/&gt;smaller than and accretive to the simple implementation tricks I already&lt;br/&gt;implemented which cause things near each other in the tree to be near each&lt;br/&gt;other in memory.&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/20170228/aa032a07/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170228/aa032a07/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszj8uuk6j30630reuad73ugfvx0yd0m4gfknjgcvaj2l0kuqa6zmszyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj8z7wtl</id>
    
      <title type="html">📅 Original date posted:2017-02-25 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszj8uuk6j30630reuad73ugfvx0yd0m4gfknjgcvaj2l0kuqa6zmszyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj8z7wtl" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8x7tp7473e0k8ph9eh6eup83q3h5l3d544mjm4qcylk6nqdjc5qsgezw8p&#39;&gt;nevent1q…zw8p&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-25&lt;br/&gt;📝 Original message:On Fri, Feb 24, 2017 at 8:12 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So to be clear, what you&amp;#39;re proposing there is to use the insertion order&lt;br/&gt;&amp;gt; as&lt;br/&gt;&amp;gt; the index - once you go that far you&amp;#39;ve almost entirely re-invented my&lt;br/&gt;&amp;gt; proposal!&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not &amp;#39;proposing&amp;#39; this, I&amp;#39;m saying it could be done simply but I&amp;#39;m&lt;br/&gt;skeptical of the utility. Probably the most compelling argument for it is&lt;br/&gt;that the insertion indexed values are much smaller so they can be compacted&lt;br/&gt;down a lot resulting in using less memory and more locality and fewer&lt;br/&gt;hashes, but your implementation doesn&amp;#39;t take advantage of that.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Your merkle-set implementation is 1500 lines of densely written Python&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The reference implementation which is included in those 1500 lines is less&lt;br/&gt;than 300 lines and fairly straightforward. The non-reference implementation&lt;br/&gt;always behaves semantically identically to the reference implementation, it&lt;br/&gt;just does so faster and using less memory.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; with&lt;br/&gt;&amp;gt; almost no comments,&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;The comments at the top explain both the proof format and the in-memory&lt;br/&gt;data structures very precisely. The whole codebase was reviewed by a&lt;br/&gt;coworker of mine and comments were added explaining the subtleties which&lt;br/&gt;tripped him up.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; and less than a 100 lines of (also uncommented) tests.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Those tests get 98% code coverage and extensively hit not only the lines of&lt;br/&gt;code but the semantic edge cases as well. The lines which aren&amp;#39;t hit are&lt;br/&gt;convenience functions and error conditions of the parsing code for when&lt;br/&gt;it&amp;#39;s passed bad data.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; By&lt;br/&gt;&amp;gt; comparison, my Python MMR implementation is 300 lines of very readable&lt;br/&gt;&amp;gt; Python&lt;br/&gt;&amp;gt; with lots of comments, a 200 line explanation at the top, and 200 lines of&lt;br/&gt;&amp;gt; (commented) tests. Yet no-one is taking the (still considerable) effort to&lt;br/&gt;&amp;gt; understand and comment on my implementation. :)&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Given that maaku&amp;#39;s Merkle prefix trees were shelved because of performance&lt;br/&gt;problems despite being written in C and operating in basically the same way&lt;br/&gt;as your code and my reference code, it&amp;#39;s clear that non-optimized Python&lt;br/&gt;won&amp;#39;t be touching the bitcoin codebase any time soon.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Fact is, what you&amp;#39;ve written is really daunting to review, and given it&amp;#39;s&lt;br/&gt;&amp;gt; not&lt;br/&gt;&amp;gt; in the final language anyway, it&amp;#39;s unclear what basis to review it on&lt;br/&gt;&amp;gt; anyway.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;It should reviewed based on semantic correctness and performance.&lt;br/&gt;Performance can only be accurately and convincingly determined by porting&lt;br/&gt;to C and optimizing it, which mostly involves experimenting with different&lt;br/&gt;values for the two passed in magic numbers.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I&lt;br/&gt;&amp;gt; suspect you&amp;#39;d get more feedback if the codebase was better commented, in a&lt;br/&gt;&amp;gt; production language, and you have actual real-world benchmarks and&lt;br/&gt;&amp;gt; performance&lt;br/&gt;&amp;gt; figures.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;Porting to C should be straightforward. Several people have already&lt;br/&gt;expressed interest in doing so, and it&amp;#39;s written in intentionally C-ish&lt;br/&gt;Python, resulting in some rather odd idioms which is a bit part of why you&lt;br/&gt;think it looks &amp;#39;dense&amp;#39;. A lot of that weird offset math should be much more&lt;br/&gt;readable in C because it&amp;#39;s all structs and x.y notation can be used instead&lt;br/&gt;of adding offsets.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; In particular, while at the top of merkle_set.py you have a list of&lt;br/&gt;&amp;gt; advantages,&lt;br/&gt;&amp;gt; and a bunch of TODO&amp;#39;s, you don&amp;#39;t explain *why* the code has any of these&lt;br/&gt;&amp;gt; advantages. To figure that out, I&amp;#39;d have to read and understand 1500 lines&lt;br/&gt;&amp;gt; of&lt;br/&gt;&amp;gt; densely written Python. Without a human-readable pitch, not many people are&lt;br/&gt;&amp;gt; going to do that, myself included.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;It&amp;#39;s all about cache coherence. When doing operations it pulls in a bunch&lt;br/&gt;of things which are near each other in memory instead of jumping all over&lt;br/&gt;the place. The improvements it gets should be much greater than the ones&lt;br/&gt;gained from insertion ordering, although the two could be accretive.&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/20170224/f104455e/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170224/f104455e/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswxpsnwssrtutk8hqfkeaphktxm2t4a3386n2v6q7uwp2zgn9d3vqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj2wj79r</id>
    
      <title type="html">📅 Original date posted:2017-02-24 📝 Original message:So ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswxpsnwssrtutk8hqfkeaphktxm2t4a3386n2v6q7uwp2zgn9d3vqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj2wj79r" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspklkm74fr2452s7f48mhjtg2aq7qrgjzysaeheeuanu49a05255g9n7y2q&#39;&gt;nevent1q…7y2q&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-24&lt;br/&gt;📝 Original message:So your idea is to cluster entries by entry time because newer things are&lt;br/&gt;more likely to leave and updating multiple things near each other is&lt;br/&gt;cheaper?&lt;br/&gt;&lt;br/&gt;That can be done with my tool. Instead of using hashes for the values being&lt;br/&gt;stored, you use position entries. The first entry gets a value of all&lt;br/&gt;zeros, the next one a one followed by all zeros, then the next two&lt;br/&gt;correspond to the first two with the second bit flipped to one, then the&lt;br/&gt;next four the first four with the third bit flipped to one, etc. It&lt;br/&gt;probably performs a little bit better to do it two bits at a time instead&lt;br/&gt;of one so that the entries are 00, 01, 10, 11, 0001, 0010, 0011, 0101,&lt;br/&gt;0110, 0111, 1001, etc. If you were to really use this you&amp;#39;d probably want&lt;br/&gt;to to add some optimizations to use the fact that the terminals fit in 64&lt;br/&gt;bits instead of 256, but it mostly works unchanged, and gets whatever&lt;br/&gt;benefits there are to this clustering plus the high performance&lt;br/&gt;implementation tricks I&amp;#39;ve built which I keep complaining that nobody&amp;#39;s&lt;br/&gt;giving feedback on.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not sold on this being a win: The empirical access patterns are&lt;br/&gt;unknown, it requires an extra cache miss per lookup to find the entry&lt;br/&gt;number, it may be that everything is optimized well enough without it for&lt;br/&gt;there to be no meaningful gains, and it&amp;#39;s a bunch of extra complexity. What&lt;br/&gt;should be done is that a plain vanilla UTXO set solution is optimized as&lt;br/&gt;well as it can be first, and then the insertion ordering trick is tried as&lt;br/&gt;an optimization to see if it&amp;#39;s an improvement. Without that baseline&lt;br/&gt;there&amp;#39;s no meaningful basis for comparison, and I&amp;#39;m quite confident that a&lt;br/&gt;naive implementation which just allocates individual nodes will&lt;br/&gt;underperform the thing I&amp;#39;ve come up with, even without adding optimizations&lt;br/&gt;related to fitting in 64 bits.&lt;br/&gt;&lt;br/&gt;On Thu, Feb 23, 2017 at 8:36 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Feb 23, 2017 at 07:32:43PM -0800, Bram Cohen wrote:&lt;br/&gt;&amp;gt; &amp;gt; On Thu, Feb 23, 2017 at 7:15 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&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; Glad we&amp;#39;re on the same page with regard to what&amp;#39;s possible in TXO&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; commitments.&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Secondly, am I correct in saying your UTXO commitments scheme requires&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; random&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; access? While you describe it as a &amp;#34;merkle set&amp;#34;, obviously to be&lt;br/&gt;&amp;gt; merkelized&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; it&amp;#39;ll have to have an ordering of some kind. What do you propose that&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; ordering&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; to be?&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The ordering is by the bits in the hash. Technically it&amp;#39;s a Patricia&lt;br/&gt;&amp;gt; Trie.&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;m using &amp;#39;merkle tree&amp;#39; to refer to basically anything with a hash root.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The hash of what? The values in the set?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; &amp;gt; Maybe more specifically, what exact values do you propose to be in the&lt;br/&gt;&amp;gt; set?&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; That is unspecified in the implementation, it just takes a 256 bit value&lt;br/&gt;&amp;gt; &amp;gt; which is presumably a hash of something. The intention is to nail down a&lt;br/&gt;&amp;gt; &amp;gt; simple format and demonstrate good performance and leave those semantics&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; a higher layer. The simplest thing would be to hash together the txid and&lt;br/&gt;&amp;gt; &amp;gt; output number.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Ok, so let&amp;#39;s assume the values in the set are the unspent outpoints.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since we&amp;#39;re ordering by the hash of the values in the set, outpoints will&lt;br/&gt;&amp;gt; be&lt;br/&gt;&amp;gt; distributed uniformly in the set, and thus the access pattern of data in&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; set is uniform.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now let&amp;#39;s fast-forward 10 years. For the sake of argument, assume that for&lt;br/&gt;&amp;gt; every 1 UTXO in the set that corresponds to funds in someone&amp;#39;s wallet that&lt;br/&gt;&amp;gt; are&lt;br/&gt;&amp;gt; likely to be spent, there are 2^12 = 4096 UTXO&amp;#39;s that have been permanently&lt;br/&gt;&amp;gt; lost (and/or created in spam attacks) and thus will never be spent.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Since lost UTXO&amp;#39;s are *also* uniformly distributed, if I&amp;#39;m processing a new&lt;br/&gt;&amp;gt; block that spends 2^12 = 4096 UTXO&amp;#39;s, on average for each UTXO spent, I&amp;#39;ll&lt;br/&gt;&amp;gt; have to update log2(4096) = 12 more digests than I would have had those&lt;br/&gt;&amp;gt; &amp;#34;dead&amp;#34;&lt;br/&gt;&amp;gt; UTXO&amp;#39;s not existed.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Concretely, imagine our UTXO set had just 8 values in it, and we were&lt;br/&gt;&amp;gt; updating&lt;br/&gt;&amp;gt; two of them:&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;     .   X .   . .   . X   .&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To mark two coins as spent, we&amp;#39;ve had to update 5 inner nodes.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now let&amp;#39;s look at what happens in an insertion-ordered TXO commitment&lt;br/&gt;&amp;gt; scheme.&lt;br/&gt;&amp;gt; For sake of argument, let&amp;#39;s assume the best possible case, where every UTXO&lt;br/&gt;&amp;gt; spent in that same block was recently created. Since the UTXO&amp;#39;s are&lt;br/&gt;&amp;gt; recently&lt;br/&gt;&amp;gt; created, chances are almost every single one of those &amp;#34;dead&amp;#34; UTXO&amp;#39;s will&lt;br/&gt;&amp;gt; have&lt;br/&gt;&amp;gt; been created in the past. Thus, since this is an insertion-ordered data&lt;br/&gt;&amp;gt; structure, those UTXO&amp;#39;s exist in an older part of the data structure that&lt;br/&gt;&amp;gt; our&lt;br/&gt;&amp;gt; new block doesn&amp;#39;t need to modify at all.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Concretely, again let&amp;#39;s imagine a TXO commitment with 8 values in it, and&lt;br/&gt;&amp;gt; two&lt;br/&gt;&amp;gt; of them being spent:&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;     .   . .   . .   . X   X&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; To mark two coins as spent, we&amp;#39;ve only had to update 3 inner nodes; while&lt;br/&gt;&amp;gt; our&lt;br/&gt;&amp;gt; tree is higher with those lost coins, those extra inner nodes are amortised&lt;br/&gt;&amp;gt; across all the coins we have to update.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The situation gets even better when we look at the *new* UTXO&amp;#39;s that our&lt;br/&gt;&amp;gt; block&lt;br/&gt;&amp;gt; creates. Suppose our UTXO set has size n. To mark a single coin as spent,&lt;br/&gt;&amp;gt; we&lt;br/&gt;&amp;gt; have to update log2(n) inner nodes. We do get to amortise this a bit at&lt;br/&gt;&amp;gt; the top&lt;br/&gt;&amp;gt; levels in the tree, but even if we assume the amortisation is totally free,&lt;br/&gt;&amp;gt; we&amp;#39;re updating at least log2(n) - log2(m) inner nodes &amp;#34;under&amp;#34; the amortised&lt;br/&gt;&amp;gt; nodes at the top of the tree for *each* new node.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Meanwhile with an insertion-ordered TXO commitment, each new UTXO added to&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; data set goes in the same place - the end. So almost none of the existing&lt;br/&gt;&amp;gt; data&lt;br/&gt;&amp;gt; needs to be touched to add the new UTXOs. Equally, the hashing required&lt;br/&gt;&amp;gt; for the&lt;br/&gt;&amp;gt; new UTXO&amp;#39;s can be done in an incremental fashion that&amp;#39;s very L1/L2 cache&lt;br/&gt;&amp;gt; friendly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; tl;dr: Precisely because access patterns in TXO commitments are *not*&lt;br/&gt;&amp;gt; uniform,&lt;br/&gt;&amp;gt; I think we&amp;#39;ll find that from a L1/L2/etc cache perspective alone, TXO&lt;br/&gt;&amp;gt; commitments will result in better performance than UTXO commitments.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Now it is true that Bitcoin&amp;#39;s current design means we&amp;#39;ll need a map of&lt;br/&gt;&amp;gt; confirmed outpoints to TXO insertion order indexes. But it&amp;#39;s not&lt;br/&gt;&amp;gt; particularly&lt;br/&gt;&amp;gt; hard to add that &amp;#34;metadata&amp;#34; to transactions on the P2P layer in the same&lt;br/&gt;&amp;gt; way&lt;br/&gt;&amp;gt; that segwit added witnesses to transactions without modifying how txids&lt;br/&gt;&amp;gt; were&lt;br/&gt;&amp;gt; calculated; if you only connect to peers who provide you with TXO index&lt;br/&gt;&amp;gt; information in blocks and transactions, you don&amp;#39;t need to keep that map&lt;br/&gt;&amp;gt; yourself.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, note how this makes transactions *smaller* in many circumstances:&lt;br/&gt;&amp;gt; it&amp;#39;s&lt;br/&gt;&amp;gt; just a 8-byte max index rather than a 40 byte outpoint.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170224/63ab2731/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170224/63ab2731/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:34&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqster3fu4aede7kr5rppuvp5tflff7mgs34mpgcnmjxvp9wqjnsa5szyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj2vz0tc</id>
    
      <title type="html">📅 Original date posted:2017-02-24 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqster3fu4aede7kr5rppuvp5tflff7mgs34mpgcnmjxvp9wqjnsa5szyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj2vz0tc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsr569knthwd8xw62cfk0z94p74ravjwfqse6gc78l69jyxwj2q7es4v80q7&#39;&gt;nevent1q…80q7&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-24&lt;br/&gt;📝 Original message:On Thu, Feb 23, 2017 at 6:58 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So to be clear, do you agree or disagree with me that you *can* extract a&lt;br/&gt;&amp;gt; compact proof from a MMR that a given output is unspent?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;After wading through your logic on how updates are done, I agree that that&lt;br/&gt;can be done, but apples to apples compact proofs can also be done in a utxo&lt;br/&gt;commitment, and proofs of the validity of updates can be done in a utxo&lt;br/&gt;commitment, so there isn&amp;#39;t any performance advantage to all that extra&lt;br/&gt;complexity.&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/20170223/a93584fd/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170223/a93584fd/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsvnytfz936flyvrfcekxkvngjl83cjnmwy9qyf9mxvjxqx5k2wj8gzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj6ru6zs</id>
    
      <title type="html">📅 Original date posted:2017-02-24 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsvnytfz936flyvrfcekxkvngjl83cjnmwy9qyf9mxvjxqx5k2wj8gzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj6ru6zs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspr443w7pdvn2ctx04ughfntu5mmvd8vdxrw9n7gt6x9nyfvzfuvcdpjctm&#39;&gt;nevent1q…jctm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-24&lt;br/&gt;📝 Original message:On Thu, Feb 23, 2017 at 5:09 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; I think you&amp;#39;ve misunderstood what TXO commitments are. From my article:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;#34;A merkle tree committing to the state of all transaction outputs, both&lt;br/&gt;&amp;gt; spent&lt;br/&gt;&amp;gt; and unspent, can provide a method of compactly proving the current state&lt;br/&gt;&amp;gt; of an&lt;br/&gt;&amp;gt; output.&amp;#34;&lt;br/&gt;&amp;gt; -&lt;a href=&#34;https://petertodd.org/2016/delayed-txo-commitments#txo-commitments&#34;&gt;https://petertodd.org/2016/delayed-txo-commitments#txo-commitments&lt;/a&gt;:&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;The proposal on that page is of a tree which does require random access&lt;br/&gt;updates, it just positions entries in the order they happened to be added&lt;br/&gt;instead of sorting by their hash. Once you start updating it to indicate&lt;br/&gt;spent status all the exact same issues of TXO size and cache coherence on&lt;br/&gt;updates show up again, but now you&amp;#39;re using a more complex bespoke data&lt;br/&gt;structure instead of a basic fundamental one.&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/20170223/e1b6fe16/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170223/e1b6fe16/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:32&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqszeydz2jn6xundxd5qrta2c4hnmju2nkdpcd3r40ku3rtf23lzx6szyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj69f84u</id>
    
      <title type="html">📅 Original date posted:2017-02-23 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszeydz2jn6xundxd5qrta2c4hnmju2nkdpcd3r40ku3rtf23lzx6szyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj69f84u" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyjm5lx4kf69frcagpxxndafqw5ldsgx3nq0wjzjzaz6srwgn24xsc0ldpf&#39;&gt;nevent1q…ldpf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-23&lt;br/&gt;📝 Original message:On Thu, Feb 23, 2017 at 3:51 PM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Thu, Feb 23, 2017 at 03:13:43PM -0800, Bram Cohen wrote:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I can&amp;#39;t speak to MMRs (they look a bit redundant with the actual&lt;br/&gt;&amp;gt; blockchain&lt;br/&gt;&amp;gt; &amp;gt; history to my eye) but circling back to utxo commitments, the benefits&lt;br/&gt;&amp;gt; are&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In what way do you see MMRs as redundant?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;You can readily prove something is in the TXO or STXO set using the actual&lt;br/&gt;blockchain, and the proofs will be nice and compact because even light&lt;br/&gt;nodes are expected to already have all the historical headers.&lt;br/&gt;&lt;br/&gt;What you can&amp;#39;t do with MMRs or the blockchain is make a compact proof that&lt;br/&gt;something is still in the utxo set, which is the whole point of utxo&lt;br/&gt;commitments.&lt;br/&gt;&lt;br/&gt;It&amp;#39;s totally reasonable for full nodes to independently update and&lt;br/&gt;recalculate the utxo set as part of their validation process. The same&lt;br/&gt;can&amp;#39;t be done for a balanced version of the txo set because it&amp;#39;s too big.&lt;br/&gt;Relying on proofs as a crutch for using the full txo set would badly&lt;br/&gt;exacerbate the already extant problem of miners doing spv mining, and&lt;br/&gt;increase the bandwidth a full validating node had to use by a multiple.&lt;br/&gt;&lt;br/&gt;This whole conversation is badly sidetracked. If people have comments on my&lt;br/&gt;merkle set I&amp;#39;d like to engage further with them, but mmrs need to be argued&lt;br/&gt;independently on their own merits before being used as a counterpoint to&lt;br/&gt;utxo commitments.&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/20170223/c2fc2e57/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170223/c2fc2e57/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:32&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspt3yugxhp2hsueyq92jm9f09cn6zdmn3lsv3dhfgsfzzeuy7tkqgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjd2l67q</id>
    
      <title type="html">📅 Original date posted:2017-02-23 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspt3yugxhp2hsueyq92jm9f09cn6zdmn3lsv3dhfgsfzzeuy7tkqgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjd2l67q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg6wz8w0k9uxg763jhessd768z8utpllcus2vg96vpjmchsy5fs4gjvdxak&#39;&gt;nevent1q…dxak&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-23&lt;br/&gt;📝 Original message:On Thu, Feb 23, 2017 at 9:53 AM, Chris Priest 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;&lt;br/&gt;&amp;gt; What problem does this try to solve, and what does it have to do with&lt;br/&gt;&amp;gt; bitcoin?&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;I can&amp;#39;t speak to MMRs (they look a bit redundant with the actual blockchain&lt;br/&gt;history to my eye) but circling back to utxo commitments, the benefits are&lt;br/&gt;that it enables actual proofs of non-fraud: You can prove the validity of a&lt;br/&gt;block based on just the previous block (and maybe some previous headers&lt;br/&gt;because of mining rewards) and can prove to a light node that a utxo hasn&amp;#39;t&lt;br/&gt;been spent yet.&lt;br/&gt;&lt;br/&gt;A major factor in the way of getting utxo commitments in blocks is&lt;br/&gt;performance. The txo set is of course vastly larger and more unwieldy. If&lt;br/&gt;you make the utxo commitments trail by a small fixed number of blocks&lt;br/&gt;(between 2 and 5) their latency problems shouldn&amp;#39;t be a big deal as long as&lt;br/&gt;the overall performance is good enough. My thesis is that with appropriate&lt;br/&gt;format and implementation tricks it&amp;#39;s possible to get performance good&lt;br/&gt;enough to no longer be a gating factor to deployment.&lt;br/&gt;&lt;br/&gt;Disappointingly there hasn&amp;#39;t been any feedback about my implementation,&lt;br/&gt;just discussion about merkle sets generally.&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/20170223/5dbd72da/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170223/5dbd72da/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdygjzfruwmxg49qsmj09v9rkl3w3yslu7vukx2a0xzx5q2ndn9uqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj5v8rxp</id>
    
      <title type="html">📅 Original date posted:2017-02-23 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdygjzfruwmxg49qsmj09v9rkl3w3yslu7vukx2a0xzx5q2ndn9uqzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj5v8rxp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqkpj7z86ffctz79xn4xt3ueq2vg6x3w8kzpv8wt3hdhfmqqk7fvgegs0qw&#39;&gt;nevent1q…s0qw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-02-23&lt;br/&gt;📝 Original message:On Wed, Feb 22, 2017 at 5:15 PM, Peter Todd 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;&lt;br/&gt;&amp;gt; With that, notice how proving the soundness of the proofs becomes trivial:&lt;br/&gt;&amp;gt; if&lt;br/&gt;&amp;gt; validation is deterministic, it is obviously impossible to construct two&lt;br/&gt;&amp;gt; different proofs that prove contradictory statements, because a proof is&lt;br/&gt;&amp;gt; simply&lt;br/&gt;&amp;gt; part of the data structure itself. Contradiction would imply that the two&lt;br/&gt;&amp;gt; proofs are different, but that&amp;#39;s easily rejected by simply checking the&lt;br/&gt;&amp;gt; hash of&lt;br/&gt;&amp;gt; the data.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;My code works this way. Proofs are serialization of a subset of the tree,&lt;br/&gt;and to validate a proof you ask a single function whether a particular&lt;br/&gt;value is included in that tree subset, and it answers yes or no, so&lt;br/&gt;obviously it&amp;#39;s impossible for a single value to both validate and not&lt;br/&gt;validate. The proof code was quite terrifying before I made this change&lt;br/&gt;(which I did on your suggestion), and it&amp;#39;s much cleaner and simpler now. It&lt;br/&gt;also in principle supports compact proofs of multiple inclusions and&lt;br/&gt;exclusions in the same serialization of a subset of the tree because the&lt;br/&gt;upper branches won&amp;#39;t have to be repeated. I haven&amp;#39;t written code for&lt;br/&gt;generating those, but the validation code will happily accept them.&lt;br/&gt;&lt;br/&gt;I&amp;#39;m not sure what you mean by MMRs though. Are you talking about MMRs where&lt;br/&gt;each mountain is a set of diffs to the old things and are periodically&lt;br/&gt;consolidated? Or do later mountains refer to internals of earlier ones? Or&lt;br/&gt;do they have &amp;#39;maybe&amp;#39; values which mean that the earlier mountain should be&lt;br/&gt;referred to? Are these patricia tries or something flatter and more fixed&lt;br/&gt;depth?&lt;br/&gt;&lt;br/&gt;My code doesn&amp;#39;t keep track of tree size, by the way. It would be trivial to&lt;br/&gt;add that functionality to the library, and including it in the hashing&lt;br/&gt;creates complexity and doesn&amp;#39;t seem to have any benefit over sending that&lt;br/&gt;data in a side channel.&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/20170222/4a48d1ae/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170222/4a48d1ae/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:56:30&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxwr4vxdr0wdkpjzp686kp8lmy8sd2n56hkx83fj0s5mll9snxp0czyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjmzrgxk</id>
    
      <title type="html">📅 Original date posted:2016-12-10 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxwr4vxdr0wdkpjzp686kp8lmy8sd2n56hkx83fj0s5mll9snxp0czyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjmzrgxk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2pvqfajpgx9aj7jfaqkhthyykfcml5ewr4gr0ay4x039960nl0qgje0vuw&#39;&gt;nevent1q…0vuw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-10&lt;br/&gt;📝 Original message:On Mon, Dec 5, 2016 at 7:27 AM, t. khan 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;&lt;br/&gt;&amp;gt; Put another way: let’s stop thinking about what the max block size should&lt;br/&gt;&amp;gt; be and start thinking about how full we want the average block to be&lt;br/&gt;&amp;gt; regardless of size. Over the last year, we’ve had averages of 75% or&lt;br/&gt;&amp;gt; higher, so aiming for 75% full seems reasonable, hence naming this concept&lt;br/&gt;&amp;gt; ‘Block75’.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;That&amp;#39;s effectively making the blocksize limit completely uncapped and only&lt;br/&gt;preventing spikes, and even in the case of spikes it doesn&amp;#39;t differentiate&lt;br/&gt;between &amp;#39;real&amp;#39; traffic and low value spam attacks. It suffers from the same&lt;br/&gt;fundamental problems as bitcoin unlimited: There are in the end no&lt;br/&gt;transaction fees, and inevitably some miners will want to impose some cap&lt;br/&gt;on block size for practical purposes, resulting in a fork.&lt;br/&gt;&lt;br/&gt;Difficulty adjustment works because there&amp;#39;s a clear goal of having a&lt;br/&gt;certain rate of making new blocks. Without a target to attempt automatic&lt;br/&gt;adjustment makes no sense.&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/20161210/01c100f5/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161210/01c100f5/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:52&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz2t9dp6ujmy5akja5lkhmyedrrzujway0kkvxrczcf8thr2t7f4szyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjsswqjx</id>
    
      <title type="html">📅 Original date posted:2016-12-11 📝 Original message:On ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz2t9dp6ujmy5akja5lkhmyedrrzujway0kkvxrczcf8thr2t7f4szyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdjsswqjx" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrgamyvsp0dfn62kq7883yrxmllsuxed288a03v0vayshud3ylats68hr9c&#39;&gt;nevent1q…hr9c&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-11&lt;br/&gt;📝 Original message:On Sun, Dec 11, 2016 at 1:40 PM, t. khan 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;&lt;br/&gt;&amp;gt; Block75 is not exponential scaling. It&amp;#39;s true the max theoretical increase&lt;br/&gt;&amp;gt; in the first year would be 7x, but the next year would be a max of 2x, and&lt;br/&gt;&amp;gt; the next could only increase by 50% and so on.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;With those limits there&amp;#39;s very little reason to not simply have a fixed&lt;br/&gt;schedule. Blocks are likely to all be full in the future anyway, with a&lt;br/&gt;real fee market, and the idea that miners will be held back on block sizes&lt;br/&gt;for worry about propagation delay is a myth, and even if it were true it&lt;br/&gt;would favor collective pooling a lot, which would be a very bad thing.&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/20161211/ea9bb129/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161211/ea9bb129/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxjx44tgd6x5mn5knr24r5fh7209cgxdjtajkne3sv8x74m2ywgjgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj90k4gu</id>
    
      <title type="html">📅 Original date posted:2016-12-10 📝 Original message:Miners ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxjx44tgd6x5mn5knr24r5fh7209cgxdjtajkne3sv8x74m2ywgjgzyrahqp7y9grxsl3u60amkx3mz7tju255ntn8j3zldwt90yg56pwdj90k4gu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsy30kum4umvjfxe930g0vzr5xkwr8ekwfyccva38ut326kqd4585sxgzfam&#39;&gt;nevent1q…zfam&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-10&lt;br/&gt;📝 Original message:Miners individually have an incentive to include every transaction they can&lt;br/&gt;when they mine a block, but they also sometimes have an incentive to&lt;br/&gt;collectively cooperate to reduce throughput to make more money as a group.&lt;br/&gt;Under schemes where limits can be adjusted both possibilities must be taken&lt;br/&gt;into account.&lt;br/&gt;&lt;br/&gt;On Sat, Dec 10, 2016 at 4:40 PM, James Hilliard 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; Miners in general are naturally incentivized to always mine max size&lt;br/&gt;&amp;gt; blocks to maximize transaction fees simply because there is very&lt;br/&gt;&amp;gt; little marginal cost to including extra transactions(there will always&lt;br/&gt;&amp;gt; be a transaction backlog of some sort available to mine since demand&lt;br/&gt;&amp;gt; for block space is effectively unbounded as fees approach 0 and they&lt;br/&gt;&amp;gt; can even mine their own transactions without any fees). This proposal&lt;br/&gt;&amp;gt; would almost certainly cause runaway block size growth and encourage&lt;br/&gt;&amp;gt; much more miner centralization.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Sat, Dec 10, 2016 at 6:26 PM, t. khan via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Miners &amp;#39;gaming&amp;#39; the Block75 system -&lt;br/&gt;&amp;gt; &amp;gt; There is no financial incentive for miners to attempt to game the Block75&lt;br/&gt;&amp;gt; &amp;gt; system. Even if it were attempted and assuming the goal was to create&lt;br/&gt;&amp;gt; bigger&lt;br/&gt;&amp;gt; &amp;gt; blocks, the maximum possible increase would be 25% over the previous&lt;br/&gt;&amp;gt; block&lt;br/&gt;&amp;gt; &amp;gt; size. And, that size would only last for two weeks before readjusting&lt;br/&gt;&amp;gt; down.&lt;br/&gt;&amp;gt; &amp;gt; It would cost them more in transaction fees to stuff the network than&lt;br/&gt;&amp;gt; they&lt;br/&gt;&amp;gt; &amp;gt; could ever make up. To game the system, they&amp;#39;d have to game it forever&lt;br/&gt;&amp;gt; with&lt;br/&gt;&amp;gt; &amp;gt; no possibility of profit.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Blocks would get too big -&lt;br/&gt;&amp;gt; &amp;gt; Eventually, blocks would get too big, but only if bandwidth stopped&lt;br/&gt;&amp;gt; &amp;gt; increasing and the cost of disk space stopped decreasing. Otherwise, the&lt;br/&gt;&amp;gt; &amp;gt; incremental adjustments made by Block75 (especially in combination with&lt;br/&gt;&amp;gt; &amp;gt; SegWit) wouldn&amp;#39;t break anyone&amp;#39;s connection or result in significantly&lt;br/&gt;&amp;gt; more&lt;br/&gt;&amp;gt; &amp;gt; orphaned blocks.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The frequent and small adjustments made by Block75 have the added&lt;br/&gt;&amp;gt; benefit of&lt;br/&gt;&amp;gt; &amp;gt; being more easily adapted to, both psychologically and technologically,&lt;br/&gt;&amp;gt; with&lt;br/&gt;&amp;gt; &amp;gt; regards to miners/node operators.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; -t.k&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; On Sat, Dec 10, 2016 at 5:44 AM, s7r via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;gt; &amp;lt;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; t. khan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; BIP Proposal - Managing Bitcoin’s block size the same way we do&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; difficulty (aka Block75)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; The every two-week adjustment of difficulty has proven to be a&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; reasonably effective and predictable way of managing how quickly&lt;br/&gt;&amp;gt; blocks&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; are mined. Bitcoin needs a reasonably effective and predictable way of&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; managing the maximum block size.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; It’s clear at this point that human beings should not be involved in&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; determination of max block size, just as they’re not involved in&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; deciding the difficulty.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Instead of setting an arbitrary max block size (1MB, 2MB, 8MB, etc.)&lt;br/&gt;&amp;gt; or&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; passing the decision to miners/pool operators, the max block size&lt;br/&gt;&amp;gt; should&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; be adjusted every two weeks (2016 blocks) using a system similar to&lt;br/&gt;&amp;gt; how&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; difficulty is calculated.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Put another way: let’s stop thinking about what the max block size&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; should be and start thinking about how full we want the average block&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; be regardless of size. Over the last year, we’ve had averages of 75%&lt;br/&gt;&amp;gt; or&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; higher, so aiming for 75% full seems reasonable, hence naming this&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; concept ‘Block75’.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; The target capacity over 2016 blocks would be 75%. If the last 2016&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; blocks are more than 75% full, add the difference to the max block&lt;br/&gt;&amp;gt; size.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Like this:&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; MAX_BLOCK_BASE_SIZE = 1000000&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; TARGET_CAPACITY = 750000&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; AVERAGE_OVER_CAP = average block size of last 2016 blocks minus&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; TARGET_CAPACITY&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; To check if a block is valid, ≤ (MAX_BLOCK_BASE_SIZE &#43;&lt;br/&gt;&amp;gt; AVERAGE_OVER_CAP)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; For example, if the last 2016 blocks are 85% full (average block is&lt;br/&gt;&amp;gt; 850&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; KB), add 10% to the max block size. The new max block size would be&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; 1,100 KB until the next 2016 blocks are mined, then reset and&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; recalculate. The 1,000,000 byte limit that exists currently would&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; remain, but would effectively be the minimum max block size.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Another two weeks goes by, the last 2016 blocks are again 85% full,&lt;br/&gt;&amp;gt; but&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; now that means they average 935 KB out of the 1,100 KB max block size.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; This is 93.5% of the 1,000,000 byte limit, so 18.5% would be added to&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; that to make the new max block size of 1,185 KB.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Another two weeks passes. This time, the average block is 1,050 KB.&lt;br/&gt;&amp;gt; The&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; new max block size is calculated to 1,300 KB (as blocks were 105%&lt;br/&gt;&amp;gt; full,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; minus the 75% capacity target, so 30% added to max block size).&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Repeat every 2016 blocks, forever.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; If Block75 had been applied at the difficulty adjustment on November&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; 18th, the max block size would have been 1,080KB, as the average block&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; during that period was 83% full, so 8% is added to the 1,000KB limit.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; The current size, after the December 2nd adjustment would be 1,150K.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Block75 would allow the max block size to grow (or shrink) in response&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; to transaction volume, and does so predictably, reasonably quickly,&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; in a method that prevents wild swings in block size or transaction&lt;br/&gt;&amp;gt; fees.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; It attempts to keep blocks at 75% total capacity over each two week&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; period, the same way difficulty tries to keep blocks mined every ten&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; minutes. It also keeps blocks as small as possible.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; Thoughts?&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &amp;gt; -t.k.&lt;br/&gt;&amp;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; I like the idea. It is good wrt growing the max. block size&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; automatically without human action, but the main problem (or question)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; is not how to grow this number, it is what number can the network&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; handle, considering both miners and users. While disk space requirements&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; might not be a big problem, block propagation time is. The time required&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; for a block to propagate in the network (or at least to all the miners)&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; is directly dependent of its size.  If blocks take too much time to&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; propagate in the network, the orphan rate will increase in unpredictable&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; ways. For example if the internet speed in China is worse than in&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Europe, and miners in China have more than 50% of the hashing power,&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; blocks mined by European miners might get orphaned.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; The system as described can also be gamed, by filling the network with&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; transactions. Miners have the monetary interest to include as many&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; transactions as possible in a block in order to collect the fees.&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; Regardless how you think about it, there has to be a maximum block size&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; that the network will allow as a consensus rule. Increasing it&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; dynamically based on transaction volume will reach a point where the&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; number got big enough that it broke things. Bitcoin, because its&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; fundamental design, can scale by using offchain solutions.&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; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &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/20161210/d2b72e8b/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161210/d2b72e8b/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:48&#43;02:00</updated>
  </entry>

</feed>