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




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

  <entry>
    <id>https://nostr.ae/nevent1qqs0a4ydzyu3jqzcspefjfuy3cnu9lcv5jr7p7uy0t4ux66l7gpjetgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6tefycy</id>
    
      <title type="html">📅 Original date posted:2023-01-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0a4ydzyu3jqzcspefjfuy3cnu9lcv5jr7p7uy0t4ux66l7gpjetgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6tefycy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdmy799j537ecdgk4tfaunj3tg25kkn87ejzp6nsp6gtd600m2dzstrr8yy&#39;&gt;nevent1q…r8yy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-10&lt;br/&gt;🗒️ Summary of this message: Discussion on potential improvements to the OP_VAULT implementation, including the use of signatures for recovery paths and the compatibility with Taproot-only extensions. There is also debate on the usefulness of batching withdrawals.&lt;br/&gt;📝 Original message:Forwarding in some conceptual feedback from the pull request.&lt;br/&gt;&lt;br/&gt;&amp;gt;From ariard:&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;ve few open questions, like if the recovery path should be committed&lt;br/&gt;with a signature rather than protected by a simple scriptpubkey preimage.&lt;br/&gt;&lt;br/&gt;That&amp;#39;s something I&amp;#39;ve wondered about too. I have to ruminate on AJ&amp;#39;s good&lt;br/&gt;post about this, but a pretty straightforward way of enabling this (at the&lt;br/&gt;expense of some complexity) is to do something like &amp;#34;if&lt;br/&gt;&amp;lt;recovery-path-hash&amp;gt; is 32 bytes, treat it as it&amp;#39;s currently used. If it&amp;#39;s&lt;br/&gt;33 bytes, use the first byte as a parameter for how to interpret it.&amp;#34; To&lt;br/&gt;start with, an extra prefix byte of 0x00 could mean &amp;#34;require a witness&lt;br/&gt;satisfying the scriptPubKey that hashes to the remaining 32 bytes&amp;#34; in the&lt;br/&gt;same way we do the unvault signing. This would enable a &amp;#34;sign-to-recover&amp;#34;&lt;br/&gt;flow at the option of the user, specified during vault creation.&lt;br/&gt;&lt;br/&gt;&amp;gt; The current OP_VAULT implementation is using OP_NOP repurposing but this&lt;br/&gt;doesn&amp;#39;t seem compatible with Taproot-only extensions (e.g ANYPREVOUT) and&lt;br/&gt;maybe a OP_SUCCESS could be used.&lt;br/&gt;&lt;br/&gt;Yes, with Greg&amp;#39;s suggestion of putting &amp;lt;target-hash&amp;gt; on the witness stack&lt;br/&gt;during OP_VAULT (-&amp;gt; OP_UNVAULT) spend, we could conceivably move&lt;br/&gt;OP_VAULT/OP_UNVAULT into Taproot-only OP_SUCCESSx opcodes. I haven&amp;#39;t&lt;br/&gt;thought hard about how worthwhile it is to preserve the ability to use&lt;br/&gt;OP_VAULT in pre-Taproot contexts.&lt;br/&gt;&lt;br/&gt;&amp;gt; There is a conceptual wonder, if a CTV and template malleability approach&lt;br/&gt;wouldn&amp;#39;t better suit the vault use-case and allow other ones, as such&lt;br/&gt;better re-usability of primitives.&lt;br/&gt;&lt;br/&gt;I dedicated a whole section of the paper (&amp;#34;Precomputed vaults with&lt;br/&gt;covenants&amp;#34;) to explaining why precomputed covenant mechanisms have big&lt;br/&gt;shortcomings for vaults.&lt;br/&gt;&lt;br/&gt;That said, a number of people have commented about OP_VAULT&amp;#39;s ability to&lt;br/&gt;(inefficiently) emulate CTV. I&amp;#39;m still very supportive of CTV, I just don&amp;#39;t&lt;br/&gt;really have any uses I personally understand inside and out aside from&lt;br/&gt;vaults... so if others do, they should really post about it on this list&lt;br/&gt;and we should resume working on an activation for CTV!&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;&amp;gt;From naumenkogs:&lt;br/&gt;&lt;br/&gt;&amp;gt; I&amp;#39;m personally not sure batching withdrawals is that compelling... It&amp;#39;s a&lt;br/&gt;nice-to-have, but I&amp;#39;d think about the benefits dropping this feature would&lt;br/&gt;provide.&lt;br/&gt;&lt;br/&gt;Having familiarity with a few large-scale custodial operations, I think&lt;br/&gt;batching is a really big deal. And if you&amp;#39;re going to support multiple&lt;br/&gt;deposits to the same vault, no support for batching is going to result in a&lt;br/&gt;lot of unnecessary output creation even as a small user if you&amp;#39;re, e.g.,&lt;br/&gt;doing weekly automated deposits from an exchange to a vault you&amp;#39;ve&lt;br/&gt;configured.&lt;br/&gt;&lt;br/&gt;Darosior comments:&lt;br/&gt;&lt;br/&gt;&amp;gt; On the contrary i think the batching feature is very compelling. The&lt;br/&gt;impossibility to batch Unvaults in Revault is a major drawback: it&lt;br/&gt;significantly increases the cost of any realistic operation (you need one&lt;br/&gt;whole additional transaction per input, and each have likely more than one&lt;br/&gt;output). It also potentially increases the cost on the network (you&amp;#39;d&lt;br/&gt;likely want some sort of anchor output on each Unvault tx, that you might&lt;br/&gt;not spend, so that&amp;#39;s 2*n outputs created with n the number of coins spent):&lt;br/&gt;we definitely don&amp;#39;t want to prevent batching. The ability to batch the&lt;br/&gt;recovery transactions (what we called Emergency tx in Revault) is also very&lt;br/&gt;compelling but i think your comment was only about batched withdrawals.&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/20230110/de2020d1/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230110/de2020d1/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:18:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxhy74uze9r3krv08t4ag4a44z4gv0pujkfdfegs7gvzpypfme7pgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6ygjq4m</id>
    
      <title type="html">📅 Original date posted:2023-01-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxhy74uze9r3krv08t4ag4a44z4gv0pujkfdfegs7gvzpypfme7pgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6ygjq4m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8mxwv9zeyyweh60w677d9dvljmps0wzzssd3h3wuez4hjtmwrwkg95737n&#39;&gt;nevent1q…737n&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-10&lt;br/&gt;🗒️ Summary of this message: Discussion on proposed improvements to Bitcoin&amp;#39;s vault system, including using pay-to-contract construction for recovery path and a generic OP_UNVAULT.&lt;br/&gt;📝 Original message:Thanks for the thoughtful reply AJ.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t think that makes sense? With a general scheme, you&amp;#39;d only be&lt;br/&gt;&amp;gt; bloating the witness data (perhaps including the witness script) not&lt;br/&gt;&amp;gt; the scriptPubKey?&lt;br/&gt;&lt;br/&gt;Sorry, sloppy language on my part. To be charitable, I&amp;#39;m talking about&lt;br/&gt;the &amp;#34;figurative sPK,&amp;#34; which of course these days lives in the witness&lt;br/&gt;for script-path-ish spends. Maybe the witness discount means that&lt;br/&gt;&amp;#34;complicated&amp;#34; scripts aren&amp;#39;t as big a deal, depending on the actual&lt;br/&gt;difference in raw script size.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I think it might be better to use a pay-to-contract construction for&lt;br/&gt;&amp;gt; the recovery path, rather than an empty witness.&lt;br/&gt;&lt;br/&gt;So I guess the one advantage that what you&amp;#39;re proposing has over just&lt;br/&gt;using a recovery-path key signature is that it&amp;#39;s all derivable from your&lt;br/&gt;cold privkey; you don&amp;#39;t have to worry about accidentally losing the&lt;br/&gt;recovery-path key.&lt;br/&gt;&lt;br/&gt;Of course you&amp;#39;re still vulnerable to spurious sweeps if the&lt;br/&gt;sha256(secret) value gets found out, which presumably you&amp;#39;d want in an&lt;br/&gt;accessible cache to avoid touching the cold secret every time you want&lt;br/&gt;to sweep.&lt;br/&gt;&lt;br/&gt;What do you think about the idea of making the recovery-path&lt;br/&gt;authorization behavior variable on a single byte flag preceding the 32&lt;br/&gt;byte data push, as I mentioned in another post? I think it may make&lt;br/&gt;sense to leave this option open to end-users (and also allow for some&lt;br/&gt;upgradeability).&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I think a generic OP_UNVAULT can be used to simulate OP_CTV: replace&lt;br/&gt;&amp;gt; &amp;#34;&amp;lt;h&amp;gt; OP_CTV&amp;#34; with &amp;#34;&amp;lt;000..0&amp;gt; 0 &amp;lt;h&amp;gt; OP_UNVAULT&amp;#34;.&lt;br/&gt;&lt;br/&gt;Yup, that&amp;#39;s an inefficient way of emulating CTV. If people want CTV, we&lt;br/&gt;should just look at activating CTV. Greg Sanders has a thing about&lt;br/&gt;&amp;#34;jetting&amp;#34; CTV into this proposal (I think) so that the code-paths are&lt;br/&gt;shared, but I haven&amp;#39;t figured out how that would work. They really&lt;br/&gt;don&amp;#39;t share that much code AFAICT.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The paper seems to put &amp;#34;OP_UNVAULT&amp;#34; first, but the code seems to&lt;br/&gt;&amp;gt; expect it to come last, not sure what&amp;#39;s up with that inconsistency.&lt;br/&gt;&lt;br/&gt;Again some sloppy notation on my part. What I sort of meant in the paper&lt;br/&gt;was a kind of functional notation `OP_VAULT(param1, param2, ...)`. Let&amp;#39;s&lt;br/&gt;chalk that up to my inexperience actually working on script stuff.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I think there&amp;#39;s maybe a cleverer way of batching / generalising&lt;br/&gt;&amp;gt; checking that input/output amounts match.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [...]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  * set C = the sum of each output that has a vault tag with&lt;br/&gt;&amp;gt;    #recovery=X&lt;br/&gt;&lt;br/&gt;This would also need to take into account that the &amp;lt;spend-delay&amp;gt;s are&lt;br/&gt;compatible, but your point is well taken.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; I think one meaningful difference between these two approaches is that&lt;br/&gt;&amp;gt; the current proposal means unvaulting locks up the entire utxo for the&lt;br/&gt;&amp;gt; delay period, rather than just the amount you&amp;#39;re trying to unvault.&lt;br/&gt;&lt;br/&gt;This is a really good point and I think is one that&amp;#39;s important to&lt;br/&gt;incorporate with a change to the existing proposal.&lt;br/&gt;&lt;br/&gt;A simple fix for facilitating the use of a &amp;#34;partial revault&amp;#34; while the&lt;br/&gt;OP_UNVAULT UTXO is outstanding would be to allow for an optional&lt;br/&gt;third output that is a redeposit back to the identical OP_VAULT sPK that&lt;br/&gt;is being spent by the OP_UNVAULT transaction, then the script&lt;br/&gt;interpreter would just ensure that the nValue of those two outputs sums&lt;br/&gt;to the sum of the input nValues.&lt;br/&gt;&lt;br/&gt;I can see what you&amp;#39;re saying about having more generic &amp;#34;group amounts by&lt;br/&gt;compatible vault params, and then compare to similarly grouped outputs,&amp;#34;&lt;br/&gt;but I&amp;#39;m just wondering if there are other uses that enables besides the&lt;br/&gt;partial-revault thing I mentioned above. If not, I&amp;#39;d probably rather just&lt;br/&gt;stick&lt;br/&gt;with something simple like having the third optional re-vault output.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Changing the unvault construction to have an optional OP_VAULT output&lt;br/&gt;&amp;gt; would remedy that, I think.&lt;br/&gt;&lt;br/&gt;Oh - okay, this is what you&amp;#39;re saying. Right!&lt;br/&gt;&lt;br/&gt;Is that a sufficient change, or are there other benefits that the more&lt;br/&gt;complicated clever-I/O-vault-grouping would enable that you have in&lt;br/&gt;mind?&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; What would it look like to just hide all this under taproot?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [...]&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; It also needs some way of constructing &amp;#34;unvault[X]&amp;#34;, which could be a&lt;br/&gt;&amp;gt; TLUV-like construction.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That all seems possible to me; though certainly needs more work/thought&lt;br/&gt;&amp;gt; than just having dedicated opcodes and stuffing the data directly in&lt;br/&gt;&amp;gt; the sPK.&lt;br/&gt;&lt;br/&gt;I think this is a very important comparison to do, but I&amp;#39;m eager to see&lt;br/&gt;code for things like this. There have been a lot of handwavey proposals&lt;br/&gt;lately without tangible code artifacts. I&amp;#39;m eager to see what these&lt;br/&gt;alternatives look like in practice - i.e. in functional tests.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Thanks again for the great mail.&lt;br/&gt;James&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/20230110/a5579378/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230110/a5579378/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:18:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr92rdgea8lpka6smcq2p4l38wg8l7en7n88mkxqh83n8x64znv3czyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6tkqluc</id>
    
      <title type="html">📅 Original date posted:2023-01-10 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr92rdgea8lpka6smcq2p4l38wg8l7en7n88mkxqh83n8x64znv3czyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6tkqluc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg7h0q98pdf3v3kzutjdhm2tvya84rpy492x46ue7kq8nufkum59qn6k0l5&#39;&gt;nevent1q…k0l5&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-10&lt;br/&gt;🗒️ Summary of this message: Greg suggested a way to enable all outputs in vault lifecycles to be P2TR, which would conceal the operation of the vault, and allow OP_VAULT/OP_UNVAULT opcodes to be implemented as Taproot-only OP_SUCCESSx opcodes. The problem is how to enable something similar for witness v0 outputs.&lt;br/&gt;📝 Original message:Greg explained his suggestion to me off-list, and I think it&amp;#39;s a good one.&lt;br/&gt;To summarize, consider the normal &amp;#34;output flow&amp;#34; of an expected vault use:&lt;br/&gt;&lt;br/&gt;(i) output to be vaulted&lt;br/&gt;  =&amp;gt; (ii) OP_VAULT output&lt;br/&gt;    =&amp;gt; (iii) OP_UNVAULT &amp;#34;trigger&amp;#34; output&lt;br/&gt;      =&amp;gt; (iv) final output&lt;br/&gt;&lt;br/&gt;In my existing draft implementation, all outputs aside from (iii), the&lt;br/&gt;OP_UNVAULT trigger, can be P2TR or P2WSH. In other words, those outputs can&lt;br/&gt;hide their true script until spend. In my draft, the OP_UNVAULT trigger had&lt;br/&gt;to be bare so that the script interpreter could inspect part of it for&lt;br/&gt;validity: &amp;#34;does this OP_UNVAULT have the same &amp;lt;recovery-spk-hash&amp;gt; and&lt;br/&gt;&amp;lt;spend-delay&amp;gt; as the OP_VAULT?&amp;#34;&lt;br/&gt;&lt;br/&gt;If that output wasn&amp;#39;t bare, because the &amp;lt;target-hash&amp;gt; is variable at the&lt;br/&gt;time of OP_UNVAULT output creation, the script interpreter would have no&lt;br/&gt;way of constructing the expected scriptPubKey.&lt;br/&gt;&lt;br/&gt;Greg&amp;#39;s suggestion would allow that output to be any kind of script. He&lt;br/&gt;suggests to put the &amp;lt;target-hash&amp;gt; onto the witness stack when spending the&lt;br/&gt;OP_VAULT output (and creating the OP_UNVAULT output). If we did that, the&lt;br/&gt;script interpreter could e.g. use a NUMS point (i.e. a publicly known point&lt;br/&gt;with no usable private key) to construct a Taproot configuration that looks&lt;br/&gt;like&lt;br/&gt;&lt;br/&gt;  tr(NUMS, {&amp;lt;OP_UNVAULT &amp;lt;recovery-key&amp;gt; &amp;lt;spend-delay&amp;gt; &amp;lt;target-hash&amp;gt;})&lt;br/&gt;&lt;br/&gt;and check if the scriptPubKey of the proposed OP_UNVAULT output matches&lt;br/&gt;that. This would allow all outputs in vault lifecycles to be P2TR, for&lt;br/&gt;example, which would conceal the operation of the vault - a very nice&lt;br/&gt;feature!&lt;br/&gt;&lt;br/&gt;This would also allow the OP_VAULT/OP_UNVAULT opcodes to be implemented as&lt;br/&gt;Taproot-only OP_SUCCESSx opcodes, if that was decided to be preferable.&lt;br/&gt;&lt;br/&gt;The problem is how to (and whether to) enable something similar for witness&lt;br/&gt;v0 outputs. For example, if we want the (ii) and (iii) output scripts to&lt;br/&gt;live behind P2WSH. One (kind of hacky) option to enable this is to have the&lt;br/&gt;script interpreter construct the expected OP_UNVAULT scriptPubKey on the&lt;br/&gt;basis of what witness version it sees. For example, if it sees &amp;#34;OP_0 &amp;lt;32&lt;br/&gt;bytes data&amp;gt;&amp;#34;, it would use &amp;lt;target-hash&amp;gt; on the witness stack to construct&lt;br/&gt;a fitting P2WSH scriptPubKey that is compatible with the OP_VAULT being&lt;br/&gt;spent, and then match against that. But if it detects &amp;#34;OP_1 &amp;lt;32 bytes&lt;br/&gt;data&amp;gt;&amp;#34;, it would do the same process for an expected Taproot-with-NUMS&lt;br/&gt;output.&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;Anyway, sorry if that was more verbose than necessary, but I think it&amp;#39;s a&lt;br/&gt;really great suggestion from Greg. I&amp;#39;ll look at modifying the&lt;br/&gt;implementation accordingly. I&amp;#39;d be curious to hear what others think as&lt;br/&gt;well.&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/20230110/c1b0d445/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230110/c1b0d445/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:18:18&#43;02:00</updated>
  </entry>

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

  <entry>
    <id>https://nostr.ae/nevent1qqszjsnhrsz0nx8v76ktr4kcss3u48j7y45u9e6vtg9erwmj7jagk6szyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr658zpvy</id>
    
      <title type="html">📅 Original date posted:2023-01-09 🗒️ Summary of this ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqszjsnhrsz0nx8v76ktr4kcss3u48j7y45u9e6vtg9erwmj7jagk6szyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr658zpvy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2s32z4lswldl0l7k8cxauldc7hjej9w6d6hajtp457ejn8ucq7msgm8v9k&#39;&gt;nevent1q…8v9k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2023-01-09&lt;br/&gt;🗒️ Summary of this message: James O&amp;#39;Beirne proposes a new design, OP_VAULT, for Bitcoin vaults that prioritizes safety benefits without getting hung up on solving the general problem of covenants.&lt;br/&gt;📝 Original message:For the last few years, I&amp;#39;ve been interested in vaults as a way to&lt;br/&gt;substantially derisk custodying Bitcoin, both at personal and commercial&lt;br/&gt;scales. Instead of abating with familiarity, as enthusiasm sometimes&lt;br/&gt;does, my conviction that vaults are an almost necessary part of bitcoin&amp;#39;s&lt;br/&gt;viability has only grown over the years.&lt;br/&gt;&lt;br/&gt;Since people first started discussing vaults, it&amp;#39;s been pretty clear that&lt;br/&gt;some kind of covenant-enabling consensus functionality is necessary to&lt;br/&gt;provide the feature set necessary to make vault use practical.&lt;br/&gt;&lt;br/&gt;Earlier last year I experimented with using OP_CTV[1], a limited covenant&lt;br/&gt;mechanism, to implement a &amp;#34;minimum-viable&amp;#34; vault design. I found that the&lt;br/&gt;inherent limitations of a precomputed covenant scheme left the resulting&lt;br/&gt;vault implementation wanting, even though it was an improvement over&lt;br/&gt;existing strategies that rely on presigned transactions and (hopefully)&lt;br/&gt;ephemeral keys.&lt;br/&gt;&lt;br/&gt;But I also found proposed &amp;#34;general&amp;#34; covenant schemes to be&lt;br/&gt;unsuitable for this use. The bloated scriptPubKeys, both in size and&lt;br/&gt;complexity, that would result when implementing something like a vault&lt;br/&gt;weren&amp;#39;t encouraging. Also importantly, the social-consensus quagmire&lt;br/&gt;regarding which covenant proposal to actually deploy feels at times&lt;br/&gt;intractable.&lt;br/&gt;&lt;br/&gt;As a result, I wanted to explore a middle way: a design solely concerned&lt;br/&gt;with making the best vault use possible, with covenant functionality as a&lt;br/&gt;secondary consideration. In other words, a proposal that would deliver&lt;br/&gt;the safety benefits of vaults to users without getting hung up on&lt;br/&gt;trying to solve the general problem of covenants.&lt;br/&gt;&lt;br/&gt;At first this design, OP_VAULT, was just sort of a pipe dream. But as I&lt;br/&gt;did more thinking (and eventually implementing) I became more convinced&lt;br/&gt;that, even if it isn&amp;#39;t considered for soft-fork, it is a worthwhile&lt;br/&gt;device to serve as a standard benchmark against which other proposals&lt;br/&gt;might be judged.&lt;br/&gt;&lt;br/&gt;I wrote a paper that summarizes my findings and the resulting proposal:&lt;br/&gt;&lt;a href=&#34;https://jameso.be/vaults.pdf&#34;&gt;https://jameso.be/vaults.pdf&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;along with an accompanying draft implementation:&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/26857&#34;&gt;https://github.com/bitcoin/bitcoin/pull/26857&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I might work on a BIP if there&amp;#39;s interest.&lt;br/&gt;&lt;br/&gt;James&lt;br/&gt;&lt;br/&gt;[1]: &lt;a href=&#34;https://github.com/jamesob/simple-ctv-vault&#34;&gt;https://github.com/jamesob/simple-ctv-vault&lt;/a&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230109/21bf137d/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20230109/21bf137d/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:18:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsze3sqfj3wlqqttn9usacu0u9mtxecfhnqgslrdp8jhdc4tcnuwnszyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6wjwl7z</id>
    
      <title type="html">📅 Original date posted:2022-02-11 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsze3sqfj3wlqqttn9usacu0u9mtxecfhnqgslrdp8jhdc4tcnuwnszyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6wjwl7z" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8mlzyd0gcflylhcg9qjatxmum4pnxaz6lpdn74cnmzvdg03kz53gmzfzue&#39;&gt;nevent1q…fzue&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-02-11&lt;br/&gt;📝 Original message:I don&amp;#39;t oppose recursive covenants per se, but in prior posts I have&lt;br/&gt;expressed uncertainty about proposals that enable more &amp;#34;featureful&amp;#34;&lt;br/&gt;covenants by adding more kinds of computation into bitcoin script.&lt;br/&gt;&lt;br/&gt;Not that anyone here is necessarily saying otherwise, but I am very&lt;br/&gt;interested in limiting operations in bitcoin script to &amp;#34;verification&amp;#34; (vs.&lt;br/&gt;&amp;#34;computation&amp;#34;) to the extent practical, and instead encouraging general&lt;br/&gt;computation be done off-chain. This of course isn&amp;#39;t a new observation and I&lt;br/&gt;think the last few years have been very successful to that effect, e.g. the&lt;br/&gt;popularity of the &amp;#34;scriptless scripts&amp;#34; idea and Taproot&amp;#39;s emphasis on&lt;br/&gt;embedding computational artifacts in key tweaks.&lt;br/&gt;&lt;br/&gt;My (maybe unfounded?) worry about opcodes like OP_CAT and OP_TX is that&lt;br/&gt;more logic will live in script than is necessary, and so the burden to&lt;br/&gt;verify the chain may grow and the extra &amp;#34;degrees of freedom&amp;#34; in script may&lt;br/&gt;make it harder to reason about. But I guess at this point there aren&amp;#39;t&lt;br/&gt;alternative means to construct new kinds of sighashes that are necessary&lt;br/&gt;for some interesting covenants.&lt;br/&gt;&lt;br/&gt;One thing I like about CTV is that it buys a lot of functionality without&lt;br/&gt;increasing the &amp;#34;surface area&amp;#34; of script&amp;#39;s design. In general I think there&lt;br/&gt;is a lot to be said for this &amp;#34;jets&amp;#34;-style approach[0] of codifying the&lt;br/&gt;script operations that you&amp;#39;d actually want to do into single opcodes. This&lt;br/&gt;adds functionality while introducing minimal surface area to script, giving&lt;br/&gt;script implementers more flexibility for, say, optimization. But of course&lt;br/&gt;this comes at the cost of precluding experimentation, and probably&lt;br/&gt;requiring more soft-forking. Though whether the place for script&lt;br/&gt;experimentation using more general-purpose opcodes on the main chain is&lt;br/&gt;another interesting debate...&lt;br/&gt;&lt;br/&gt;Sorry for going a little off-topic there.&lt;br/&gt;&lt;br/&gt;[0]: &lt;a href=&#34;https://medium.com/blockstream/simplicity-jets-release-803db10fd589&#34;&gt;https://medium.com/blockstream/simplicity-jets-release-803db10fd589&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;On Thu, Feb 10, 2022 at 7:55 PM David A. Harding via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; On Mon, Feb 07, 2022 at 08:34:30PM -0800, Jeremy Rubin via bitcoin-dev&lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt; Whether [recursive covenants] is an issue or not precluding this sort&lt;br/&gt;&amp;gt; &amp;gt; of design or not, I defer to others.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; For reference, I believe the last time the merits of allowing recursive&lt;br/&gt;&amp;gt; covenants was discussed at length on this list[1], not a single person&lt;br/&gt;&amp;gt; replied to say that they were opposed to the idea.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I would like to suggest that anyone opposed to recursive covenants speak&lt;br/&gt;&amp;gt; for themselves (if any intelligent such people exist).  Citing the risk&lt;br/&gt;&amp;gt; of recursive covenants without presenting a credible argument for the&lt;br/&gt;&amp;gt; source of that risk feels to me like (at best) stop energy[2] and (at&lt;br/&gt;&amp;gt; worst) FUD.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -Dave&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019203.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-July/019203.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://radio-weblogs.com/0107584/stories/2002/05/05/stopEnergyByDaveWiner.html&#34;&gt;http://radio-weblogs.com/0107584/stories/2002/05/05/stopEnergyByDaveWiner.html&lt;/a&gt;&lt;br/&gt;&amp;gt;     (thanks to AJ who told me about stop energy one time when I was&lt;br/&gt;&amp;gt;     producing it)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220211/bf500325/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220211/bf500325/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:03:27&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0hyaf464hcf7vw3ayg79plke3rvulahzkpftf93v4jkdfyd6thlgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr60yhkdr</id>
    
      <title type="html">📅 Original date posted:2019-04-03 📝 Original message:Thanks ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0hyaf464hcf7vw3ayg79plke3rvulahzkpftf93v4jkdfyd6thlgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr60yhkdr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspf8hc467h4u55v8vtp3j4cn5q0u0egm8e0wfaw8f87gyqku2yf9g5pc36y&#39;&gt;nevent1q…c36y&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-04-03&lt;br/&gt;📝 Original message:Thanks for the reply, Jonas. I should&amp;#39;ve figured someone had hit the&lt;br/&gt;mailing list with this one before!&lt;br/&gt;&lt;br/&gt;In hindsight, I may have overemphasized the use of this for low-powered&lt;br/&gt;mobile devices. Indeed I think this may also be a worthwhile optimization&lt;br/&gt;for common hardware too.&lt;br/&gt;&lt;br/&gt;On the margin, if a user wants to interact with Bitcoin they will download&lt;br/&gt;software that allows them to do it immediately - this results in many&lt;br/&gt;people defaulting to a light client. If Bitcoin were able to initialize&lt;br/&gt;from scratch in a comparable amount of time and then populate the full&lt;br/&gt;chain in the background, we may have many more people *incidentally*&lt;br/&gt;running full nodes.&lt;br/&gt;&lt;br/&gt;Regardless of whether or not we use UTXO snapshots per se, I&amp;#39;d argue that&lt;br/&gt;the pattern of doing some kind of quick initialization (whether it&amp;#39;s with&lt;br/&gt;assumed-valid data, or headers-contingent data like BIP157) and then&lt;br/&gt;performing full validation in the background is a good way to ensure that&lt;br/&gt;we have a healthier population of full nodes than we would otherwise.&lt;br/&gt;&lt;br/&gt;For this reason, and (as Ethan points out) because IBD&amp;#39;s linear setup time&lt;br/&gt;is infeasible in the long-term, I think this pattern is an obvious&lt;br/&gt;direction for the bitcoin client to go.&lt;br/&gt;&lt;br/&gt;&amp;gt; * Do we semi-trust the peer that servers the UTXO set (compared to a&lt;br/&gt;block or tx which we can validate)? What channel to we use to serve the&lt;br/&gt;snapshot?&lt;br/&gt;&lt;br/&gt;As you note in your post from 2016, where and how we retrieve the snapshot&lt;br/&gt;is more or less immaterial because we compare a hash of its contents to a&lt;br/&gt;previously specified value that the code ships with (the `assumeutxo`&lt;br/&gt;hash). We don&amp;#39;t need to trust the source serving it to us, although&lt;br/&gt;bandwidth DoS prevention via some kind chunked delivery from peers would be&lt;br/&gt;worth thinking about.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;James&lt;br/&gt;&lt;br/&gt;On Wed, Apr 3, 2019 at 2:37 AM Jonas Schnelli &amp;lt;dev at jonasschnelli.ch&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Thanks James for the post.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I proposed a similar idea [1] back in 2016 with the difference of signing&lt;br/&gt;&amp;gt; the UTXO-set hash in a gitian-ish way.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; While the idea of UTXO-set-syncs are attractive, there are probably still&lt;br/&gt;&amp;gt; significant downsides in usability (compared to models with less security),&lt;br/&gt;&amp;gt; mainly:&lt;br/&gt;&amp;gt; * Assume the UTXO set is 6 weeks old (which seems a reasonable age for&lt;br/&gt;&amp;gt; providing enough security) a peer using that snapshot would still require&lt;br/&gt;&amp;gt; to download and verify ~6048 blocks (~7.9GB at 1.3MB blocks,… probably&lt;br/&gt;&amp;gt; CPU-days on a phone)&lt;br/&gt;&amp;gt; * Do we semi-trust the peer that servers the UTXO set (compared to a block&lt;br/&gt;&amp;gt; or tx which we can validate)? What channel to we use to serve the snapshot?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If the goal is to run a full node on a consumer device that is also been&lt;br/&gt;&amp;gt; used for other CPU intense operations (like a phone, etc.), I’m not sure if&lt;br/&gt;&amp;gt; this proposal will lead to a satisfactory user experience.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The longer I think around this problem, the more I lean towards accepting&lt;br/&gt;&amp;gt; the fact that one need to use dedicated hardware in his own environment to&lt;br/&gt;&amp;gt; perform a painless full validation.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; /jonas&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-February/012478.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-February/012478.html&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Am 02.04.2019 um 22:43 schrieb James O&amp;#39;Beirne via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt;:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Hi,&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;d like to discuss assumeutxo, which is an appealing and simple&lt;br/&gt;&amp;gt; &amp;gt; optimization in the spirit of assumevalid[0].&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; # Motivation&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; To start a fully validating bitcoin client from scratch, that client&lt;br/&gt;&amp;gt; currently&lt;br/&gt;&amp;gt; &amp;gt; needs to perform an initial block download. To the surprise of no one,&lt;br/&gt;&amp;gt; IBD&lt;br/&gt;&amp;gt; &amp;gt; takes a linear amount time based on the length of the chain&amp;#39;s history.&lt;br/&gt;&amp;gt; For&lt;br/&gt;&amp;gt; &amp;gt; clients running on modest hardware under limited bandwidth constraints,&lt;br/&gt;&amp;gt; &amp;gt; say a mobile device, completing IBD takes a considerable amount of time&lt;br/&gt;&amp;gt; &amp;gt; and thus poses serious usability challenges.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; As a result, having fully validating clients run on such hardware is&lt;br/&gt;&amp;gt; rare and&lt;br/&gt;&amp;gt; &amp;gt; basically unrealistic. Clients with even moderate resource constraints&lt;br/&gt;&amp;gt; &amp;gt; are encouraged to rely on the SPV trust model. Though we have promising&lt;br/&gt;&amp;gt; &amp;gt; improvements to existing SPV modes pending deployment[1], it&amp;#39;s worth&lt;br/&gt;&amp;gt; &amp;gt; thinking about a mechanism that would allow such clients to use trust&lt;br/&gt;&amp;gt; &amp;gt; models closer to full validation.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The subject of this mail is a proposal for a complementary alternative&lt;br/&gt;&amp;gt; to SPV&lt;br/&gt;&amp;gt; &amp;gt; modes, and which is in the spirit of an existing default, `assumevalid`.&lt;br/&gt;&amp;gt; It may&lt;br/&gt;&amp;gt; &amp;gt; help modest clients transact under a security model that closely&lt;br/&gt;&amp;gt; resembles&lt;br/&gt;&amp;gt; &amp;gt; full validation within minutes instead of hours or days.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; # assumeutxo&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The basic idea is to allow nodes to initialize using a serialized&lt;br/&gt;&amp;gt; version of the&lt;br/&gt;&amp;gt; &amp;gt; UTXO set rendered by another node at some predetermined height. The&lt;br/&gt;&amp;gt; &amp;gt; initializing node syncs the headers chain from the network, then obtains&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; loads one of these UTXO snapshots (i.e. a serialized version of the UTXO&lt;br/&gt;&amp;gt; set&lt;br/&gt;&amp;gt; &amp;gt; bundled with the block header indicating its &amp;#34;base&amp;#34; and some other&lt;br/&gt;&amp;gt; metadata).&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Based upon the snapshot, the node is able to quickly reconstruct its&lt;br/&gt;&amp;gt; chainstate,&lt;br/&gt;&amp;gt; &amp;gt; and compares a hash of the resulting UTXO set to a preordained hash&lt;br/&gt;&amp;gt; hard-coded&lt;br/&gt;&amp;gt; &amp;gt; in the software a la assumevalid. This all takes ~23 minutes, not&lt;br/&gt;&amp;gt; accounting for&lt;br/&gt;&amp;gt; &amp;gt; download of the 3.2GB snapshot[2].&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The node then syncs to the network tip and afterwards begins a&lt;br/&gt;&amp;gt; simultaneous&lt;br/&gt;&amp;gt; &amp;gt; background validation (i.e., a conventional IBD) up to the base height&lt;br/&gt;&amp;gt; of the&lt;br/&gt;&amp;gt; &amp;gt; snapshot in order to achieve full validation. Crucially, even while the&lt;br/&gt;&amp;gt; &amp;gt; background validation is happening the node can validate incoming blocks&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; transact with the benefit of the full (assumed-valid) UTXO set.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Snapshots could be obtained from multiple separate peers in the same&lt;br/&gt;&amp;gt; manner as&lt;br/&gt;&amp;gt; &amp;gt; block download, but I haven&amp;#39;t put much thought into this. In concept it&lt;br/&gt;&amp;gt; doesn&amp;#39;t&lt;br/&gt;&amp;gt; &amp;gt; matter too much where the snapshots come from since their validity is&lt;br/&gt;&amp;gt; &amp;gt; determined via content hash.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; # Security&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Obviously there are some security implications due consideration. While&lt;br/&gt;&amp;gt; this&lt;br/&gt;&amp;gt; &amp;gt; proposal is in the spirit of assumevalid, practical attacks may become&lt;br/&gt;&amp;gt; easier.&lt;br/&gt;&amp;gt; &amp;gt; Under assumevalid, a user can be tricked into transacting under a false&lt;br/&gt;&amp;gt; history&lt;br/&gt;&amp;gt; &amp;gt; if an attacker convinces them to start bitcoind with a malicious&lt;br/&gt;&amp;gt; `-assumevalid`&lt;br/&gt;&amp;gt; &amp;gt; parameter, sybils their node, and then feeds them a bogus chain&lt;br/&gt;&amp;gt; encompassing&lt;br/&gt;&amp;gt; &amp;gt; all of the hard-coded checkpoints[3].&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The same attack is made easier in assumeutxo because, unlike in&lt;br/&gt;&amp;gt; assumevalid,&lt;br/&gt;&amp;gt; &amp;gt; the attacker need not construct a valid PoW chain to get the victim&amp;#39;s&lt;br/&gt;&amp;gt; node into&lt;br/&gt;&amp;gt; &amp;gt; a false state; they simply need to get the user to accept a bad&lt;br/&gt;&amp;gt; `-assumeutxo`&lt;br/&gt;&amp;gt; &amp;gt; parameter and then supply them an easily made UTXO snapshot containing,&lt;br/&gt;&amp;gt; say, a&lt;br/&gt;&amp;gt; &amp;gt; false coin assignment.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For this reason, I recommend that if we were to implement assumeutxo, we&lt;br/&gt;&amp;gt; not&lt;br/&gt;&amp;gt; &amp;gt; allow its specification via commandline argument[4].&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Beyond this risk, I can&amp;#39;t think of material differences in security&lt;br/&gt;&amp;gt; relative to&lt;br/&gt;&amp;gt; &amp;gt; assumevalid, though I appeal to the list for help with this.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; # More fully validating clients&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; A particularly exciting use-case for assumeutxo is the possibility of&lt;br/&gt;&amp;gt; mobile&lt;br/&gt;&amp;gt; &amp;gt; devices functioning as fully validating nodes with access to the&lt;br/&gt;&amp;gt; complete UTXO&lt;br/&gt;&amp;gt; &amp;gt; set (as an alternative to SPV models). The total resource burden needed&lt;br/&gt;&amp;gt; to start a node&lt;br/&gt;&amp;gt; &amp;gt; from scratch based on a snapshot is, at time of writing, a ~(3.2GB&lt;br/&gt;&amp;gt; &amp;gt; &#43; blocks_to_tip * 4MB) download and a few minutes of processing time,&lt;br/&gt;&amp;gt; which sounds&lt;br/&gt;&amp;gt; &amp;gt; manageable for many mobile devices currently in use.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; A mobile user could initialize an assumed-valid bitcoin node within an&lt;br/&gt;&amp;gt; hour,&lt;br/&gt;&amp;gt; &amp;gt; transact immediately, and complete a pruned full validation of their&lt;br/&gt;&amp;gt; &amp;gt; assumed-valid chain over the next few days, perhaps only doing the&lt;br/&gt;&amp;gt; background&lt;br/&gt;&amp;gt; &amp;gt; IBD when their device has access to suitable high-bandwidth connections.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; If we end up implementing an accumulator-based UTXO scaling design[5][6]&lt;br/&gt;&amp;gt; down&lt;br/&gt;&amp;gt; &amp;gt; the road, it&amp;#39;s easy to imagine an analogous process that would allow&lt;br/&gt;&amp;gt; very fast&lt;br/&gt;&amp;gt; &amp;gt; startup using an accumulator of a few kilobytes in lieu of a multi-GB&lt;br/&gt;&amp;gt; snapshot.&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; I&amp;#39;ve created a related issue at our Github repository here:&lt;br/&gt;&amp;gt; &amp;gt;   &lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/15605&#34;&gt;https://github.com/bitcoin/bitcoin/issues/15605&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; and have submitted a draft implementation of snapshot usage via RPC here:&lt;br/&gt;&amp;gt; &amp;gt;   &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15606&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15606&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; I&amp;#39;d like to discuss here whether this is a good fit for Bitcoin&lt;br/&gt;&amp;gt; conceptually. Concrete&lt;br/&gt;&amp;gt; &amp;gt; plans for deployment steps should be discussed in the Github issue, and&lt;br/&gt;&amp;gt; after all&lt;br/&gt;&amp;gt; &amp;gt; that my implementation may be reviewed as a sketch of the specific&lt;br/&gt;&amp;gt; software&lt;br/&gt;&amp;gt; &amp;gt; changes necessary.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; Regards,&lt;br/&gt;&amp;gt; &amp;gt; James&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; [0]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&#34;&gt;https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; [1]: &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; [2]: as tested at height 569895, on a 12 core Intel Xeon Silver 4116 CPU&lt;br/&gt;&amp;gt; @ 2.10GHz&lt;br/&gt;&amp;gt; &amp;gt; [3]:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/84d0fdc/src/chainparams.cpp#L145-L161&#34;&gt;https://github.com/bitcoin/bitcoin/blob/84d0fdc/src/chainparams.cpp#L145-L161&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; [4]: Marco Falke is due credit for this point&lt;br/&gt;&amp;gt; &amp;gt; [5]: utreexo: &lt;a href=&#34;https://www.youtube.com/watch?v=edRun-6ubCc&#34;&gt;https://www.youtube.com/watch?v=edRun-6ubCc&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt; [6]: Boneh, Bunz, Fisch on accumulators:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://eprint.iacr.org/2018/1188&#34;&gt;https://eprint.iacr.org/2018/1188&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; &amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190403/e631ec0b/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190403/e631ec0b/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:17:25&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr5xudsnde5ettnuvz9e35gydrn53gtpjtna44fv8j2lnmpzjnlmgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6e50dg0</id>
    
      <title type="html">📅 Original date posted:2019-04-04 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr5xudsnde5ettnuvz9e35gydrn53gtpjtna44fv8j2lnmpzjnlmgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6e50dg0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd49etz0zqzmjmdzkp9eu95m9reru58qp55ry6tp9snp8e5yld28sc3qczf&#39;&gt;nevent1q…qczf&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-04-04&lt;br/&gt;📝 Original message:I recommend that anyone following this thread read through the recent IRC&lt;br/&gt;exchange between Greg Maxwell and Luke Dashjr:&lt;br/&gt; &lt;a href=&#34;http://www.erisian.com.au/bitcoin-core-dev/log-2019-04-04.html&#34;&gt;http://www.erisian.com.au/bitcoin-core-dev/log-2019-04-04.html&lt;/a&gt;&lt;br/&gt;&amp;lt;&lt;a href=&#34;http://www.erisian.com.au/bitcoin-core-dev/log-2019-04-04.html&amp;gt&#34;&gt;http://www.erisian.com.au/bitcoin-core-dev/log-2019-04-04.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;The conversation starts on line 205 at 2019-04-04T02:54:50.&lt;br/&gt;&lt;br/&gt;On Thu, Apr 4, 2019 at 2:38 AM Jim Posen 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; Learning C&#43;&#43; is something within everyone&amp;#39;s capability. Even people who do&lt;br/&gt;&amp;gt;&amp;gt; not&lt;br/&gt;&amp;gt;&amp;gt; wish to learn it can hire someone to perform review for them.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Anyone with enough knowledge of C&#43;&#43; to audit the entire the Bitcoin Core&lt;br/&gt;&amp;gt; codebase is more than capable of running it with assumeutxo disabled and&lt;br/&gt;&amp;gt; checking the hard-coded vale themself.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;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/20190404/91235d28/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190404/91235d28/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:17:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrs7wesds3dx2jwghcl5nqqkhsg5tve4d8ha4xlhpxj2hk0uygqpgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6t4zguh</id>
    
      <title type="html">📅 Original date posted:2019-04-02 📝 Original message:Hi, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrs7wesds3dx2jwghcl5nqqkhsg5tve4d8ha4xlhpxj2hk0uygqpgzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6t4zguh" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8lczr6jghkn09hvzm30pf60hhm976vymwx6dcj89dvkxswu6a0ggwjut77&#39;&gt;nevent1q…ut77&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-04-02&lt;br/&gt;📝 Original message:Hi,&lt;br/&gt;&lt;br/&gt;I&amp;#39;d like to discuss assumeutxo, which is an appealing and simple&lt;br/&gt;optimization in the spirit of assumevalid[0].&lt;br/&gt;&lt;br/&gt;# Motivation&lt;br/&gt;&lt;br/&gt;To start a fully validating bitcoin client from scratch, that client&lt;br/&gt;currently&lt;br/&gt;needs to perform an initial block download. To the surprise of no one, IBD&lt;br/&gt;takes a linear amount time based on the length of the chain&amp;#39;s history. For&lt;br/&gt;clients running on modest hardware under limited bandwidth constraints,&lt;br/&gt;say a mobile device, completing IBD takes a considerable amount of time&lt;br/&gt;and thus poses serious usability challenges.&lt;br/&gt;&lt;br/&gt;As a result, having fully validating clients run on such hardware is rare&lt;br/&gt;and&lt;br/&gt;basically unrealistic. Clients with even moderate resource constraints&lt;br/&gt;are encouraged to rely on the SPV trust model. Though we have promising&lt;br/&gt;improvements to existing SPV modes pending deployment[1], it&amp;#39;s worth&lt;br/&gt;thinking about a mechanism that would allow such clients to use trust&lt;br/&gt;models closer to full validation.&lt;br/&gt;&lt;br/&gt;The subject of this mail is a proposal for a complementary alternative to&lt;br/&gt;SPV&lt;br/&gt;modes, and which is in the spirit of an existing default, `assumevalid`. It&lt;br/&gt;may&lt;br/&gt;help modest clients transact under a security model that closely resembles&lt;br/&gt;full validation within minutes instead of hours or days.&lt;br/&gt;&lt;br/&gt;# assumeutxo&lt;br/&gt;&lt;br/&gt;The basic idea is to allow nodes to initialize using a serialized version&lt;br/&gt;of the&lt;br/&gt;UTXO set rendered by another node at some predetermined height. The&lt;br/&gt;initializing node syncs the headers chain from the network, then obtains and&lt;br/&gt;loads one of these UTXO snapshots (i.e. a serialized version of the UTXO set&lt;br/&gt;bundled with the block header indicating its &amp;#34;base&amp;#34; and some other&lt;br/&gt;metadata).&lt;br/&gt;&lt;br/&gt;Based upon the snapshot, the node is able to quickly reconstruct its&lt;br/&gt;chainstate,&lt;br/&gt;and compares a hash of the resulting UTXO set to a preordained hash&lt;br/&gt;hard-coded&lt;br/&gt;in the software a la assumevalid. This all takes ~23 minutes, not&lt;br/&gt;accounting for&lt;br/&gt;download of the 3.2GB snapshot[2].&lt;br/&gt;&lt;br/&gt;The node then syncs to the network tip and afterwards begins a simultaneous&lt;br/&gt;background validation (i.e., a conventional IBD) up to the base height of&lt;br/&gt;the&lt;br/&gt;snapshot in order to achieve full validation. Crucially, even while the&lt;br/&gt;background validation is happening the node can validate incoming blocks and&lt;br/&gt;transact with the benefit of the full (assumed-valid) UTXO set.&lt;br/&gt;&lt;br/&gt;Snapshots could be obtained from multiple separate peers in the same manner&lt;br/&gt;as&lt;br/&gt;block download, but I haven&amp;#39;t put much thought into this. In concept it&lt;br/&gt;doesn&amp;#39;t&lt;br/&gt;matter too much where the snapshots come from since their validity is&lt;br/&gt;determined via content hash.&lt;br/&gt;&lt;br/&gt;# Security&lt;br/&gt;&lt;br/&gt;Obviously there are some security implications due consideration. While this&lt;br/&gt;proposal is in the spirit of assumevalid, practical attacks may become&lt;br/&gt;easier.&lt;br/&gt;Under assumevalid, a user can be tricked into transacting under a false&lt;br/&gt;history&lt;br/&gt;if an attacker convinces them to start bitcoind with a malicious&lt;br/&gt;`-assumevalid`&lt;br/&gt;parameter, sybils their node, and then feeds them a bogus chain encompassing&lt;br/&gt;all of the hard-coded checkpoints[3].&lt;br/&gt;&lt;br/&gt;The same attack is made easier in assumeutxo because, unlike in assumevalid,&lt;br/&gt;the attacker need not construct a valid PoW chain to get the victim&amp;#39;s node&lt;br/&gt;into&lt;br/&gt;a false state; they simply need to get the user to accept a bad&lt;br/&gt;`-assumeutxo`&lt;br/&gt;parameter and then supply them an easily made UTXO snapshot containing,&lt;br/&gt;say, a&lt;br/&gt;false coin assignment.&lt;br/&gt;&lt;br/&gt;For this reason, I recommend that if we were to implement assumeutxo, we not&lt;br/&gt;allow its specification via commandline argument[4].&lt;br/&gt;&lt;br/&gt;Beyond this risk, I can&amp;#39;t think of material differences in security&lt;br/&gt;relative to&lt;br/&gt;assumevalid, though I appeal to the list for help with this.&lt;br/&gt;&lt;br/&gt;# More fully validating clients&lt;br/&gt;&lt;br/&gt;A particularly exciting use-case for assumeutxo is the possibility of mobile&lt;br/&gt;devices functioning as fully validating nodes with access to the complete&lt;br/&gt;UTXO&lt;br/&gt;set (as an alternative to SPV models). The total resource burden needed to&lt;br/&gt;start a node&lt;br/&gt;from scratch based on a snapshot is, at time of writing, a ~(3.2GB&lt;br/&gt;&#43; blocks_to_tip * 4MB) download and a few minutes of processing time, which&lt;br/&gt;sounds&lt;br/&gt;manageable for many mobile devices currently in use.&lt;br/&gt;&lt;br/&gt;A mobile user could initialize an assumed-valid bitcoin node within an hour,&lt;br/&gt;transact immediately, and complete a pruned full validation of their&lt;br/&gt;assumed-valid chain over the next few days, perhaps only doing the&lt;br/&gt;background&lt;br/&gt;IBD when their device has access to suitable high-bandwidth connections.&lt;br/&gt;&lt;br/&gt;If we end up implementing an accumulator-based UTXO scaling design[5][6]&lt;br/&gt;down&lt;br/&gt;the road, it&amp;#39;s easy to imagine an analogous process that would allow very&lt;br/&gt;fast&lt;br/&gt;startup using an accumulator of a few kilobytes in lieu of a multi-GB&lt;br/&gt;snapshot.&lt;br/&gt;&lt;br/&gt;---&lt;br/&gt;&lt;br/&gt;I&amp;#39;ve created a related issue at our Github repository here:&lt;br/&gt;  &lt;a href=&#34;https://github.com/bitcoin/bitcoin/issues/15605&#34;&gt;https://github.com/bitcoin/bitcoin/issues/15605&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;and have submitted a draft implementation of snapshot usage via RPC here:&lt;br/&gt;  &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/15606&#34;&gt;https://github.com/bitcoin/bitcoin/pull/15606&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I&amp;#39;d like to discuss here whether this is a good fit for Bitcoin&lt;br/&gt;conceptually. Concrete&lt;br/&gt;plans for deployment steps should be discussed in the Github issue, and&lt;br/&gt;after all&lt;br/&gt;that my implementation may be reviewed as a sketch of the specific software&lt;br/&gt;changes necessary.&lt;br/&gt;&lt;br/&gt;Regards,&lt;br/&gt;James&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[0]:&lt;br/&gt;&lt;a href=&#34;https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&#34;&gt;https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&lt;/a&gt;&lt;br/&gt;[1]: &lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0157.mediawiki&lt;/a&gt;&lt;br/&gt;[2]: as tested at height 569895, on a 12 core Intel Xeon Silver 4116 CPU @&lt;br/&gt;2.10GHz&lt;br/&gt;[3]:&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/84d0fdc/src/chainparams.cpp#L145-L161&#34;&gt;https://github.com/bitcoin/bitcoin/blob/84d0fdc/src/chainparams.cpp#L145-L161&lt;/a&gt;&lt;br/&gt;[4]: Marco Falke is due credit for this point&lt;br/&gt;[5]: utreexo: &lt;a href=&#34;https://www.youtube.com/watch?v=edRun-6ubCc&#34;&gt;https://www.youtube.com/watch?v=edRun-6ubCc&lt;/a&gt;&lt;br/&gt;[6]: Boneh, Bunz, Fisch on accumulators: &lt;a href=&#34;https://eprint.iacr.org/2018/1188&#34;&gt;https://eprint.iacr.org/2018/1188&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/20190402/46b25dd8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20190402/46b25dd8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:17:21&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqspyf85lvadm6vfug8ulh0uvjtt07xwna2qu9lhrkurj27ap4z4hcqzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6e7cdwf</id>
    
      <title type="html">📅 Original date posted:2015-10-07 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqspyf85lvadm6vfug8ulh0uvjtt07xwna2qu9lhrkurj27ap4z4hcqzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6e7cdwf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9mahwz0q4kg3p6uyclcgmwmmtvgv6hxj7jv5ce86uxxce3cem8ugw9pnmw&#39;&gt;nevent1q…pnmw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-07&lt;br/&gt;📝 Original message:This has been confirmed as a bug. Thanks again for reporting. I&amp;#39;ve filed a&lt;br/&gt;fix here (&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/6777&#34;&gt;https://github.com/bitcoin/bitcoin/pull/6777&lt;/a&gt;), and will be&lt;br/&gt;writing tests to prevent regressions.&lt;br/&gt;&lt;br/&gt;On Wed, Oct 7, 2015 at 4:32 PM, James O&amp;#39;Beirne &amp;lt;james.obeirne at gmail.com&amp;gt;&lt;br/&gt;wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hey, Daniel.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Patch author here. Thanks for the diligence; I think this indeed may be an&lt;br/&gt;&amp;gt; oversight, though I&amp;#39;m going to need to look into a bit more thoroughly at&lt;br/&gt;&amp;gt; home. Curious that it didn&amp;#39;t fail any of the automated tests.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Correct me if I&amp;#39;m wrong, but the only actual invocation of that method is&lt;br/&gt;&amp;gt; here&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/src/rpcblockchain.cpp#L448&amp;gt&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/src/rpcblockchain.cpp#L448&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; (and even then, proxied through a few layers of CCoinView-machinery). In&lt;br/&gt;&amp;gt; fact, this line&lt;br/&gt;&amp;gt; &amp;lt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/src/coins.cpp#L48&amp;gt&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/src/coins.cpp#L48&amp;gt&lt;/a&gt;; makes&lt;br/&gt;&amp;gt; me suspect that the implementation of GetStats you reference may be dead&lt;br/&gt;&amp;gt; code.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In any case, you raise a good point: if users of CLevelDBWrapper go&lt;br/&gt;&amp;gt; directly for the iterator, they run the risk of dealing with obfuscated&lt;br/&gt;&amp;gt; data. This should be remedied somehow.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;ll give it more look this evening.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Thanks again for the find,&lt;br/&gt;&amp;gt; James&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On Wed, Oct 7, 2015 at 10:25 AM, Daniel Kraft via bitcoin-dev &amp;lt;&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Hi!&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; I hope this is not a stupid question, but I thought I&amp;#39;d ask here first&lt;br/&gt;&amp;gt;&amp;gt; instead of opening a Github ticket (in case I&amp;#39;m wrong).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; With the recently merged &amp;#34;obfuscation&amp;#34; patch, content of the&lt;br/&gt;&amp;gt;&amp;gt; &amp;#34;chainstate&amp;#34; LevelDB is obfuscated by XOR&amp;#39;ing against a random &amp;#34;key&amp;#34;.&lt;br/&gt;&amp;gt;&amp;gt; This is handled by CLevelDBWrapper&amp;#39;s Read/Write methods, which probably&lt;br/&gt;&amp;gt;&amp;gt; cover most of the usecases.&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; *However*, shouldn&amp;#39;t it also be handled when iterating over the&lt;br/&gt;&amp;gt;&amp;gt; database?  In particular, I would expect that the obfuscation key is&lt;br/&gt;&amp;gt;&amp;gt; applied before line 119 in txdb.cpp (i. e., while iterating over the&lt;br/&gt;&amp;gt;&amp;gt; coin database in CCoinsViewDB::GetStats).&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Is there a reason why this need not be done there, or is this an actual&lt;br/&gt;&amp;gt;&amp;gt; oversight?&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; Yours,&lt;br/&gt;&amp;gt;&amp;gt; Daniel&lt;br/&gt;&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;http://www.domob.eu/&#34;&gt;http://www.domob.eu/&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; OpenPGP: 1142 850E 6DFF 65BA 63D6  88A8 B249 2AC4 A733 0737&lt;br/&gt;&amp;gt;&amp;gt; Namecoin: id/domob -&amp;gt; &lt;a href=&#34;https://nameid.org/?name=domob&#34;&gt;https://nameid.org/?name=domob&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt; --&lt;br/&gt;&amp;gt;&amp;gt; Done:  Arc-Bar-Cav-Hea-Kni-Ran-Rog-Sam-Tou-Val-Wiz&lt;br/&gt;&amp;gt;&amp;gt; To go: Mon-Pri&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;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151007/ce7d4d3f/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151007/ce7d4d3f/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:03&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs9mahwz0q4kg3p6uyclcgmwmmtvgv6hxj7jv5ce86uxxce3cem8ugzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6dzhpph</id>
    
      <title type="html">📅 Original date posted:2015-10-07 📝 Original message:Hey, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs9mahwz0q4kg3p6uyclcgmwmmtvgv6hxj7jv5ce86uxxce3cem8ugzyp5949m658utd78vfr7eh9qxxuz0gzq539yr98kj6u5lv0j5kvdr6dzhpph" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg0vmp7cuet9kchrr74mltcf9vylx9rsfp3rnej8ewn32fff69llc55cng4&#39;&gt;nevent1q…cng4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2015-10-07&lt;br/&gt;📝 Original message:Hey, Daniel.&lt;br/&gt;&lt;br/&gt;Patch author here. Thanks for the diligence; I think this indeed may be an&lt;br/&gt;oversight, though I&amp;#39;m going to need to look into a bit more thoroughly at&lt;br/&gt;home. Curious that it didn&amp;#39;t fail any of the automated tests.&lt;br/&gt;&lt;br/&gt;Correct me if I&amp;#39;m wrong, but the only actual invocation of that method is&lt;br/&gt;here&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/src/rpcblockchain.cpp#L448&amp;gt&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/src/rpcblockchain.cpp#L448&amp;gt&lt;/a&gt;;&lt;br/&gt;(and even then, proxied through a few layers of CCoinView-machinery). In&lt;br/&gt;fact, this line&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/blob/master/src/coins.cpp#L48&amp;gt&#34;&gt;https://github.com/bitcoin/bitcoin/blob/master/src/coins.cpp#L48&amp;gt&lt;/a&gt;; makes me&lt;br/&gt;suspect that the implementation of GetStats you reference may be dead code.&lt;br/&gt;&lt;br/&gt;In any case, you raise a good point: if users of CLevelDBWrapper go&lt;br/&gt;directly for the iterator, they run the risk of dealing with obfuscated&lt;br/&gt;data. This should be remedied somehow.&lt;br/&gt;&lt;br/&gt;I&amp;#39;ll give it more look this evening.&lt;br/&gt;&lt;br/&gt;Thanks again for the find,&lt;br/&gt;James&lt;br/&gt;&lt;br/&gt;On Wed, Oct 7, 2015 at 10:25 AM, Daniel Kraft via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Hi!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I hope this is not a stupid question, but I thought I&amp;#39;d ask here first&lt;br/&gt;&amp;gt; instead of opening a Github ticket (in case I&amp;#39;m wrong).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; With the recently merged &amp;#34;obfuscation&amp;#34; patch, content of the&lt;br/&gt;&amp;gt; &amp;#34;chainstate&amp;#34; LevelDB is obfuscated by XOR&amp;#39;ing against a random &amp;#34;key&amp;#34;.&lt;br/&gt;&amp;gt; This is handled by CLevelDBWrapper&amp;#39;s Read/Write methods, which probably&lt;br/&gt;&amp;gt; cover most of the usecases.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; *However*, shouldn&amp;#39;t it also be handled when iterating over the&lt;br/&gt;&amp;gt; database?  In particular, I would expect that the obfuscation key is&lt;br/&gt;&amp;gt; applied before line 119 in txdb.cpp (i. e., while iterating over the&lt;br/&gt;&amp;gt; coin database in CCoinsViewDB::GetStats).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Is there a reason why this need not be done there, or is this an actual&lt;br/&gt;&amp;gt; oversight?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Yours,&lt;br/&gt;&amp;gt; Daniel&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://www.domob.eu/&#34;&gt;http://www.domob.eu/&lt;/a&gt;&lt;br/&gt;&amp;gt; OpenPGP: 1142 850E 6DFF 65BA 63D6  88A8 B249 2AC4 A733 0737&lt;br/&gt;&amp;gt; Namecoin: id/domob -&amp;gt; &lt;a href=&#34;https://nameid.org/?name=domob&#34;&gt;https://nameid.org/?name=domob&lt;/a&gt;&lt;br/&gt;&amp;gt; --&lt;br/&gt;&amp;gt; Done:  Arc-Bar-Cav-Hea-Kni-Ran-Rog-Sam-Tou-Val-Wiz&lt;br/&gt;&amp;gt; To go: Mon-Pri&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151007/d8da0a40/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151007/d8da0a40/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:43:02&#43;02:00</updated>
  </entry>

</feed>