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




  <entry>
    <id>https://nostr.ae/nevent1qqsq46yc2xx37427wjt7e4qud9ym87algl26enqq0lx3plmayayca5qzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypw6n5zew</id>
    
      <title type="html">📅 Original date posted:2019-10-01 📝 Original message: I do ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsq46yc2xx37427wjt7e4qud9ym87algl26enqq0lx3plmayayca5qzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypw6n5zew" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvmjeqmrudv0xyu33zn8tmyppqs76ntvtje93sv8dmdy5nx8ll54gv0twy6&#39;&gt;nevent1q…twy6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-10-01&lt;br/&gt;📝 Original message:&lt;br/&gt;I do have some concerns about SIGHASH_NOINPUT, mainly that it does&lt;br/&gt;introduce another footgun into the bitcoin protocol with address reuse.&lt;br/&gt;It&amp;#39;s common practice for bitcoin businesses to re-use addresses. Many&lt;br/&gt;exchanges [1] reuse addresses for cold storage with very large sums of&lt;br/&gt;money that is stored in these addreses.&lt;br/&gt;&lt;br/&gt;It is my understanding with this part of BIP118&lt;br/&gt;&lt;br/&gt;&amp;gt;Using NOINPUT the input containing the signature no longer references a&lt;br/&gt;specific output. Any participant can take a transaction and rewrite it by&lt;br/&gt;changing the hash reference to the previous output, without invalidating&lt;br/&gt;the signatures. This allows transactions to be bound to any output that&lt;br/&gt;matches the value committed to in the witness and whose witnessProgram,&lt;br/&gt;combined with the spending transaction&amp;#39;s witness returns true.&lt;br/&gt;&lt;br/&gt;if an exchange were to once produce a digital signature from that cold&lt;br/&gt;storage address with a SIGHASH_NOINPUT signature, that signature can be&lt;br/&gt;replayed again and again on the blockchain until their wallet is drained.&lt;br/&gt;This might be able to mitigated since the signatures commit to outputs,&lt;br/&gt;which may be small in value for the transaction that SIGHASH_NOINPUT was&lt;br/&gt;used. This means that an exchange could move coins from the address with a&lt;br/&gt;larger transaction that spends money to a new output (and presumably pays a&lt;br/&gt;higher fee than the smaller transactions).&lt;br/&gt;&lt;br/&gt;### Why does this matter?&lt;br/&gt;&lt;br/&gt;It seems that SIGHASH_NOINPUT will be an extremely useful tool for offchain&lt;br/&gt;protocols like Lightning. This gives us the building blocks for enforcing&lt;br/&gt;specific offchain states to end up onchain [2].&lt;br/&gt;&lt;br/&gt;Since this tool is useful, we can presume that it will be integrated into&lt;br/&gt;the signing path of large economic entities in bitcoin -- namely exchanges.&lt;br/&gt;Many exchanges have specific signing procedures for transactions that are&lt;br/&gt;leaving an exchange that is custom software. Now -- presuming wide adoption&lt;br/&gt;of off chain protocols -- they will need to have a _second unique signing&lt;br/&gt;path that uses SIGHASH_NOINPUT_.&lt;br/&gt;&lt;br/&gt;It is imperative that this second signing path -- which uses&lt;br/&gt;SIGHASH_NOINPUT -- does NOT get mixed up with the first signing path that&lt;br/&gt;controls an exchanges onchain funds. If this were to happen, fund lost&lt;br/&gt;could occur if the exchange is reusing address, which seems to be common&lt;br/&gt;practice.&lt;br/&gt;&lt;br/&gt;This is stated here in BIP118:&lt;br/&gt;&lt;br/&gt;&amp;gt;This also means that particular care has to be taken in order to avoid&lt;br/&gt;unintentionally enabling this rebinding mechanism. NOINPUT MUST NOT be&lt;br/&gt;used, unless it is explicitly needed for the application, e.g., it MUST NOT&lt;br/&gt;be a default signing flag in a wallet implementation. Rebinding is only&lt;br/&gt;possible when the outputs the transaction may bind to all use the same&lt;br/&gt;public keys. Any public key that is used in a NOINPUT signature MUST only&lt;br/&gt;be used for outputs that the input may bind to, and they MUST NOT be used&lt;br/&gt;for transactions that the input may not bind to. For example an application&lt;br/&gt;SHOULD generate a new key-pair for the application instance using NOINPUT&lt;br/&gt;signatures and MUST NOT reuse them afterwards.&lt;br/&gt;&lt;br/&gt;This means we need to encourage onchain hot wallet signing procedures to be&lt;br/&gt;kept separate from offchain hot wallet signing procedures, which introduces&lt;br/&gt;more complexity for key management (two keychains).&lt;br/&gt;&lt;br/&gt;One (of the few) upsides of the current Lightning penalty mechanism is that&lt;br/&gt;fund loss can be contained to balance of the channel. You cannot do&lt;br/&gt;something in the current protocol that will effect your funds outside of&lt;br/&gt;that channel. With SIGHASH_NOINPUT, that property changes.&lt;br/&gt;&lt;br/&gt;### A side note&lt;br/&gt;In general, i think we should start disallowing uses of the SIGHASH&lt;br/&gt;protocols that have unexpected behavior. The classic example of this is&lt;br/&gt;SIGHASH_SINGLE [3]. I get uneasy about adding more footguns to the&lt;br/&gt;protocol, which with current network behavior (address re-use)&lt;br/&gt;SIGHASH_NOINPUT would be a big one.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;[1] - &lt;a href=&#34;https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html&#34;&gt;https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html&lt;/a&gt;&lt;br/&gt;[2] -&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-September/002136.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-September/002136.html&lt;/a&gt;&lt;br/&gt;[3] -&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-May/016048.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-May/016048.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;On Mon, Sep 30, 2019 at 9:24 AM Christian Decker via bitcoin-dev &amp;lt;&lt;br/&gt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; With the recently renewed interest in eltoo, a proof-of-concept&lt;br/&gt;&amp;gt; implementation&lt;br/&gt;&amp;gt; [1], and the discussions regarding clean abstractions for off-chain&lt;br/&gt;&amp;gt; protocols&lt;br/&gt;&amp;gt; [2,3], I thought it might be time to revisit the `sighash_noinput` proposal&lt;br/&gt;&amp;gt; (BIP-118 [4]), and AJ&amp;#39;s `bip-anyprevout` proposal [5].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; (sorry for the long e-mail. I wanted to give enough context and describe&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; various tradeoffs so people don&amp;#39;t have to stitch them together from&lt;br/&gt;&amp;gt; memory. If&lt;br/&gt;&amp;gt; you&amp;#39;re impatient there are a couple of open questions at the bottom)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Both proposals are ways to allow rebinding of transactions to new outputs,&lt;br/&gt;&amp;gt; by&lt;br/&gt;&amp;gt; adding a sighash flag that excludes the output when signing. This allows&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; transaction to be bound to any output, without needing a new signature, as&lt;br/&gt;&amp;gt; long as output script and input script are compatible, e.g., the signature&lt;br/&gt;&amp;gt; matches the public key specified in the output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; BIP-118 is limited to explaining the details of signature verification, and&lt;br/&gt;&amp;gt; omits anything related to deployment and dependency on other proposals.&lt;br/&gt;&amp;gt; This&lt;br/&gt;&amp;gt; was done in order not to depend on bip-taproot which is also in draft-phase&lt;br/&gt;&amp;gt; currently, and to allow deployment alongside the next version of segwit&lt;br/&gt;&amp;gt; script. `bip-anyprevout` builds on top of BIP-118, adding integration with&lt;br/&gt;&amp;gt; `bip-taproot`, chaperone signatures, limits the use of the sighash flag to&lt;br/&gt;&amp;gt; script path spends, as well as a new pubkey serialization which uses the&lt;br/&gt;&amp;gt; first&lt;br/&gt;&amp;gt; byte to signal opt-in.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I&amp;#39;d like to stress that both proposals are complementary and not competing,&lt;br/&gt;&amp;gt; which is something that I&amp;#39;ve heard a couple of times.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; There remain a couple of unclear points which I hope we can address in the&lt;br/&gt;&amp;gt; coming days, to get this thing moving again, and hopefully get a new tool&lt;br/&gt;&amp;gt; in&lt;br/&gt;&amp;gt; our toolbox soon(ish).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In the following I will quote a couple of things that were discussed during&lt;br/&gt;&amp;gt; the CoreDev meeting earlier this year, but not everybody could join, and&lt;br/&gt;&amp;gt; it is&lt;br/&gt;&amp;gt; important that we engage the wider community, to get a better picture, and&lt;br/&gt;&amp;gt; I&lt;br/&gt;&amp;gt; think not everybody is up-to-date about the current state.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Dangers of `sighash_noinput`&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; An argument I have heard against noinput is that it is slightly less&lt;br/&gt;&amp;gt; complex&lt;br/&gt;&amp;gt; or compute intensive than `sighash_all` signatures, which may encourage&lt;br/&gt;&amp;gt; wallet&lt;br/&gt;&amp;gt; creators to only implement the noinput variant, and use it indiscrimi-&lt;br/&gt;&amp;gt; nately. This is certainly a good argument, and indeed we have seen at least&lt;br/&gt;&amp;gt; one developer proposing to use noinput for all transactions to discourage&lt;br/&gt;&amp;gt; address reuse.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This was also mentioned at CoreDev [6]:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; When [...] said he wanted to write a wallet that only used&lt;br/&gt;&amp;gt; SIGHASH\_NOINPUT,&lt;br/&gt;&amp;gt; &amp;gt; that was pause for concern. Some people might want to use&lt;br/&gt;&amp;gt; SIGHASH\_NOINPUT as a&lt;br/&gt;&amp;gt; &amp;gt; way to cheapen or reduce the complexity of making a wallet&lt;br/&gt;&amp;gt; &amp;gt; implementation. SIGHASH\_NOINPUT is from a purely procedural point of&lt;br/&gt;&amp;gt; view&lt;br/&gt;&amp;gt; &amp;gt; easier than doing a SIGHASH\_ALL, that&amp;#39;s all I&amp;#39;m saying. So you&amp;#39;re&lt;br/&gt;&amp;gt; hashing&lt;br/&gt;&amp;gt; &amp;gt; less. It&amp;#39;s way faster. That concern has been brought to my attention and&lt;br/&gt;&amp;gt; it&amp;#39;s&lt;br/&gt;&amp;gt; &amp;gt; something I can see. Do we want to avoid people being stupid and shooting&lt;br/&gt;&amp;gt; &amp;gt; themselves and their customers in the foot? Or do we treat this as a&lt;br/&gt;&amp;gt; special&lt;br/&gt;&amp;gt; &amp;gt; case where you mark we&amp;#39;re aware of how it should be used and we just try&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; get that awareness out?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Another issue that is sometimes brought up is that an external user may&lt;br/&gt;&amp;gt; attempt to send funds to a script that was really part of a higher-level&lt;br/&gt;&amp;gt; protocol. This leads to those funds becoming inaccessible unless you gather&lt;br/&gt;&amp;gt; all the participants and sign off on those funds. I don&amp;#39;t believe this is&lt;br/&gt;&amp;gt; anything new, and if users really want to shoot themselves in the foot and&lt;br/&gt;&amp;gt; send funds to random addresses they fish out of a blockexplorer there&amp;#39;s&lt;br/&gt;&amp;gt; little&lt;br/&gt;&amp;gt; we can do. What we could do is make the scripts used internally in our&lt;br/&gt;&amp;gt; protocols unaddressable (see output tagging below), removing this issue&lt;br/&gt;&amp;gt; altogether.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Chaperone signatures&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Chaperone signatures are signatures that ensure that there is no&lt;br/&gt;&amp;gt; third-party&lt;br/&gt;&amp;gt; malleability of transactions. The idea is to have an additional signature,&lt;br/&gt;&amp;gt; that doesn&amp;#39;t use noinput, or any of its variants, and therefore needs to be&lt;br/&gt;&amp;gt; authored by one of the pubkeys in the output script, i.e., one or more of&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; participants of the contract the transaction belongs to. Concretely in&lt;br/&gt;&amp;gt; eltoo&lt;br/&gt;&amp;gt; we&amp;#39;d be using a shared key known to all participants in the eltoo&lt;br/&gt;&amp;gt; instance, so&lt;br/&gt;&amp;gt; any participant can sign an update to rebind it to the desired output.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Chaperone signatures have a number of downsides however:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; -   Additional size: both the public key and the signature actually need&lt;br/&gt;&amp;gt; to be&lt;br/&gt;&amp;gt;     stored along with the real noinput signature, resulting in transfer,&lt;br/&gt;&amp;gt;     computational and storage overhead. We can&amp;#39;t reuse the same pubkey&lt;br/&gt;&amp;gt; from the&lt;br/&gt;&amp;gt;     noinput signature since that&amp;#39;d require access to the matching privkey&lt;br/&gt;&amp;gt; which&lt;br/&gt;&amp;gt;     is what we want to get rid of using noinput in the first place.&lt;br/&gt;&amp;gt; -   Protocols can still simply use a globally known privkey, voiding the&lt;br/&gt;&amp;gt;     benefit of chaperone signatures, since third-parties can sign again. I&lt;br/&gt;&amp;gt;     argue that third-party malleability is a subset of first-party&lt;br/&gt;&amp;gt;     malleability, and we should protect against first-party malleability&lt;br/&gt;&amp;gt; first&lt;br/&gt;&amp;gt;     and foremost. My counterparty has the incentive to trick me, a&lt;br/&gt;&amp;gt; third-party&lt;br/&gt;&amp;gt;     may not.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; On the plus side chaperone signatures certainly address the lazy-wallet-dev&lt;br/&gt;&amp;gt; scenario, and as AJ points out in [bip-anyprevout] we get back the same&lt;br/&gt;&amp;gt; security guarantees as we had without noinput.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; From what I remember and the transcript (thanks Kanzure for your awesome&lt;br/&gt;&amp;gt; work&lt;br/&gt;&amp;gt; by the way), there was no strong support for chaperone signatures during&lt;br/&gt;&amp;gt; the&lt;br/&gt;&amp;gt; meeting [6], but feedback from people that were not present is needed:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; if everyone who wanted to use NOINPUT was convinced there was a problem,&lt;br/&gt;&amp;gt; then&lt;br/&gt;&amp;gt; &amp;gt; they would pick the right thing, but clearly people aren&amp;#39;t. It&amp;#39;s not a&lt;br/&gt;&amp;gt; &amp;gt; foot-gun defense mechanism because it&amp;#39;s easily bypassed, and it&amp;#39;s easier&lt;br/&gt;&amp;gt; to&lt;br/&gt;&amp;gt; &amp;gt; bypass it than to use it. Whereas for tagged outputs, it&amp;#39;s that if you&lt;br/&gt;&amp;gt; want&lt;br/&gt;&amp;gt; &amp;gt; any NOINPUT then you must tag.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Output tagging&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; One proposal that I found rather fascinating during the discussion in&lt;br/&gt;&amp;gt; Amsterdam was that we could achieve the same disincentive to use on&lt;br/&gt;&amp;gt; non-smart-contract cases by simply making the output scripts&lt;br/&gt;&amp;gt; unaddressable. This can be done by specifying a version of taproot outputs&lt;br/&gt;&amp;gt; for&lt;br/&gt;&amp;gt; which the bech32 addressing scheme simply doesn&amp;#39;t have a representation&lt;br/&gt;&amp;gt; [6]:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; The tagged outputs idea is that we don&amp;#39;t have NOINPUT ANYPREVOUT&lt;br/&gt;&amp;gt; supported for&lt;br/&gt;&amp;gt; &amp;gt; taproot v1 outputs, instead we have a segwit version 16 v16 that supports&lt;br/&gt;&amp;gt; &amp;gt; taproot. The reason for v16 is that we redefine bech32 to not cover&lt;br/&gt;&amp;gt; &amp;gt; v16. There&amp;#39;s no addresses for this type of output. If you&amp;#39;re an exchange&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt; &amp;gt; receive a bech32 address, you declare it invalid. You make it less user&lt;br/&gt;&amp;gt; &amp;gt; friendly here; and there shouldn&amp;#39;t be an address anyway. You might want&lt;br/&gt;&amp;gt; to see&lt;br/&gt;&amp;gt; &amp;gt; it on a block explorer, but you don&amp;#39;t want to pass it around to anyone.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; We don&amp;#39;t need addresses in our contract constructions because we deal&lt;br/&gt;&amp;gt; directly&lt;br/&gt;&amp;gt; with the scripts. This would also have the desired effect of no allowing&lt;br/&gt;&amp;gt; generic wallets to send to these addresses, or users accidentally sending&lt;br/&gt;&amp;gt; funds to what was supposed to be a one-off script used internally in the&lt;br/&gt;&amp;gt; off-chain contract.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Notice that this idea was already used by Russell O&amp;#39;Connor when performing&lt;br/&gt;&amp;gt; a&lt;br/&gt;&amp;gt; transaction on elements using his new scripting language simplicity&lt;br/&gt;&amp;gt; [7]:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; For this experimental development, we created an improper segwit version,&lt;br/&gt;&amp;gt; &amp;gt; &amp;#34;version 31&amp;#34; for Simplicity addresses. The payload of this segwit&lt;br/&gt;&amp;gt; version 31&lt;br/&gt;&amp;gt; &amp;gt; address contains a commitment Merkle root of a Simplicity program to&lt;br/&gt;&amp;gt; control&lt;br/&gt;&amp;gt; &amp;gt; the UTXO.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The concern with output tagging is that it hurts fungibility, marking&lt;br/&gt;&amp;gt; outputs&lt;br/&gt;&amp;gt; used in a contract as such and making them identifiable. But maybe it&lt;br/&gt;&amp;gt; would be&lt;br/&gt;&amp;gt; a good idea to create two domains anyway: one for user-addressable&lt;br/&gt;&amp;gt; destinations which users can use with their general purpose wallets, and&lt;br/&gt;&amp;gt; one&lt;br/&gt;&amp;gt; domain for contracts, which users cannot send to directly.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This also came up during the CoreDev meeting [ams-coredev]:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; these sort of NOINPUT signatures are only things that are within some&lt;br/&gt;&amp;gt; &amp;gt; application or within some protocol that gets negotiated between&lt;br/&gt;&amp;gt; participants,&lt;br/&gt;&amp;gt; &amp;gt; but they don&amp;#39;t cross-independent domains where you see a wallet or a&lt;br/&gt;&amp;gt; protocol&lt;br/&gt;&amp;gt; &amp;gt; as a kind of domain. You can&amp;#39;t tell the difference, is this an address I&lt;br/&gt;&amp;gt; can&lt;br/&gt;&amp;gt; &amp;gt; give to someone else or not? It&amp;#39;s all scripts, no real addresses. There&lt;br/&gt;&amp;gt; are&lt;br/&gt;&amp;gt; &amp;gt; types of outputs that are completely insecure unconditionally; there are&lt;br/&gt;&amp;gt; &amp;gt; things that are protected and I can give to anyone, you don&amp;#39;t want to&lt;br/&gt;&amp;gt; reuse&lt;br/&gt;&amp;gt; &amp;gt; it, but there&amp;#39;s no security issue from doing so. This is an additional&lt;br/&gt;&amp;gt; class&lt;br/&gt;&amp;gt; &amp;gt; that is secure perfectly but only when used in the right way.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; ## Open questions&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The questions that remain to be addressed are the following:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1.  General agreement on the usefulness of noinput / anyprevoutanyscript /&lt;br/&gt;&amp;gt;     anyprevout. While at the CoreDev meeting I think everybody agreed that&lt;br/&gt;&amp;gt;     these proposals a useful, also beyond eltoo, not everybody could be&lt;br/&gt;&amp;gt;     there. I&amp;#39;d therefore like to elicit some feedback from the wider&lt;br/&gt;&amp;gt; community.&lt;br/&gt;&amp;gt; 2.  Is there strong support or opposition to the chaperone signatures&lt;br/&gt;&amp;gt;     introduced in anyprevout / anyprevoutanyscript? I think it&amp;#39;d be best to&lt;br/&gt;&amp;gt;     formulate a concrete set of pros and contras, rather than talk about&lt;br/&gt;&amp;gt;     abstract dangers or advantages.&lt;br/&gt;&amp;gt; 3.  The same for output tagging / explicit opt-in. What are the advantages&lt;br/&gt;&amp;gt; and&lt;br/&gt;&amp;gt;     disadvantages?&lt;br/&gt;&amp;gt; 4.  Shall we merge BIP-118 and bip-anyprevout. This would likely reduce the&lt;br/&gt;&amp;gt;     confusion and make for simpler discussions in the end.&lt;br/&gt;&amp;gt; 5.  Anything I forgot to mention :-)&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Christian&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; [1] &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-September/002131.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2019-September/002131.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; [2] &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-September/017285.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2019-September/017285.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; [3] &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-August/001383.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/lightning-dev/2018-August/001383.html&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; [4] &amp;lt;&lt;a href=&#34;https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki&amp;gt&#34;&gt;https://github.com/bitcoin/bips/blob/master/bip-0118.mediawiki&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; [5] &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-anyprevout.mediawiki&#34;&gt;https://github.com/ajtowns/bips/blob/bip-anyprevout/bip-anyprevout.mediawiki&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; [6] &amp;lt;&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://diyhpl.us/wiki/transcripts/bitcoin-core-dev-tech/2019-06-06-noinput-etc/&#34;&gt;http://diyhpl.us/wiki/transcripts/bitcoin-core-dev-tech/2019-06-06-noinput-etc/&lt;/a&gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; [7] &amp;lt;&lt;a href=&#34;https://lists.ozlabs.org/pipermail/simplicity/2019/000018.html&amp;gt&#34;&gt;https://lists.ozlabs.org/pipermail/simplicity/2019/000018.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20191001/6260f1ba/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20191001/6260f1ba/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:56:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8s04f6343ne04pr2p4e0k85t9f5c0h0uzjkk326x0e6e80r7g7gqzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwc6shp9</id>
    
      <title type="html">📅 Original date posted:2022-03-05 📝 Original message:Hey ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8s04f6343ne04pr2p4e0k85t9f5c0h0uzjkk326x0e6e80r7g7gqzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwc6shp9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsty9uc98pf9swavqgcgc2nym8ke7kmr4xltgu20c8zv4hk2r7pqgspq76qc&#39;&gt;nevent1q…76qc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-05&lt;br/&gt;📝 Original message:Hey ZmnSCPxj,&lt;br/&gt;&lt;br/&gt;I thought about this for a few days and I think you are right. In the case&lt;br/&gt;of recurring payments this is identical to nLocktime. When doing recurring&lt;br/&gt;payments with this scheme, you probably want to rate limit subsequent UTXOs&lt;br/&gt;_with_ nlocktimes to make sure a malicious Netflix can&amp;#39;t withdraw 12 month&lt;br/&gt;so of subscriptions by attesting with their oracle 12 times.&lt;br/&gt;&lt;br/&gt;I think this proposal describes arbitrary lines of pre-approved credit from&lt;br/&gt;a bitcoin wallet. The line can be drawn down with oracle attestations. You&lt;br/&gt;can mix in locktimes on these pre-approved lines of credit if you would&lt;br/&gt;like to rate limit, or ignore rate limiting and allow the full utxo to be&lt;br/&gt;spent by the borrower. It really is contextual to the use case IMO.&lt;br/&gt;&lt;br/&gt;-Chris&lt;br/&gt;&lt;br/&gt;On Fri, Mar 4, 2022 at 2:22 AM ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Good morning Chris,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Quick question.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; How does this improve over just handing over `nLockTime`d transactions?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220305/94c8f310/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220305/94c8f310/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:09&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0r2q9ecvw82er4aa8ktwv5ca7x3q8trav9vpq80cw4ynalcu3hmgzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwekrf9f</id>
    
      <title type="html">📅 Original date posted:2022-03-03 📝 Original message:DLCs ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0r2q9ecvw82er4aa8ktwv5ca7x3q8trav9vpq80cw4ynalcu3hmgzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwekrf9f" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyu2tdueu3usvla4mldc7dey7wfj6fx7m53zaq3c22tdcexj70xpg9xvyjm&#39;&gt;nevent1q…vyjm&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2022-03-03&lt;br/&gt;📝 Original message:DLCs are typically thought to be used for betting. Alice &amp;amp; Bob want to&lt;br/&gt;speculate on an event, and have bitcoin payouts rewarded to them if they&lt;br/&gt;bet correctly. The oracle determines what event occurred and produces&lt;br/&gt;attestations representing that outcome.&lt;br/&gt;&lt;br/&gt;Recently I had a conversation with a friend about implementing recurring&lt;br/&gt;subscriptions with Discreet Log Contracts. At a high level, you should&lt;br/&gt;think about this working like ACH. If you are purchasing a subscription&lt;br/&gt;from Netflix, they will deduct $20 from your bank account every month. To&lt;br/&gt;do this, you give them your credit card information.&lt;br/&gt;&lt;br/&gt;You can do this with Discreet Log Contracts. It requires a slightly&lt;br/&gt;modified DLC setup. Netflix would create an oracle representing a monthly&lt;br/&gt;subscription. They require that users setup DLCs to them that will be&lt;br/&gt;executed at the end of the month. Alice, a subscriber to Netflix, creates a&lt;br/&gt;unilaterally funded DLC to Netflix. She creates adaptor signatures for her&lt;br/&gt;payment and sends them to Netflix.&lt;br/&gt;&lt;br/&gt;No bitcoin transaction is required to create this subscription since the&lt;br/&gt;DLC is unilaterally funded. Alice can “cancel” the subscription at any time&lt;br/&gt;by spending from the utxo she is using to fund the DLC.&lt;br/&gt;&lt;br/&gt;At the end of the month, Netflix attests that it is time to charge Alice&lt;br/&gt;for her subscription. Netflix takes its own attestation and decrypts&lt;br/&gt;Alice’s adaptor signature to get her signature to send funds to Netflix.&lt;br/&gt;Netflix publishes the settlement transaction for the DLC which pays Netflix&lt;br/&gt;it’s subscription fee for the next month. Netflix also publishes a new&lt;br/&gt;announcement for next month so that Alice can create a new DLC subscription.&lt;br/&gt;&lt;br/&gt;Netflix needs to give Alice a bitcoin address to pay to.&lt;br/&gt;&lt;br/&gt;The information Alice is required to send Netflix is&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;   1.&lt;br/&gt;&lt;br/&gt;   Her utxo used to fund the DLC&lt;br/&gt;   2.&lt;br/&gt;&lt;br/&gt;   Her adaptor signature representing her monthly subscription to netflix.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Netflix must verify the adaptor signatures are correct and the utxo exists.&lt;br/&gt;&lt;br/&gt;Why is this useful?&lt;br/&gt;&lt;br/&gt;It&amp;#39;s very convenient for a user to give access to withdraw a certain amount&lt;br/&gt;of money from a bank account at a given time in the future. This is how&lt;br/&gt;recurring payments work in tradfi. This brings the same principle to&lt;br/&gt;bitcoin payments.&lt;br/&gt;&lt;br/&gt;DLCs also give you the power to specify how much the service can withdraw.&lt;br/&gt;For instance, with Netflix, they shouldn’t have the ability to withdraw&lt;br/&gt;thousands of dollars worth of bitcoin. The monthly service fee is $20. With&lt;br/&gt;DLCs, you can cryptographically enforce that they will only receive $20.&lt;br/&gt;They cannot withdraw more or less money than they are authorized to.&lt;br/&gt;&lt;br/&gt;There may be concerns about Netflix being both the oracle and the entity&lt;br/&gt;receiving a monthly payment. I would argue this is mitigated by the fact&lt;br/&gt;that the service provider could steal at most one months worth of service&lt;br/&gt;fees for users of the subscription. After users get scammed once, they will&lt;br/&gt;cancel their future subscription and distrust the service. The key feature&lt;br/&gt;is the amount of money in the subscription is predetermined, thus the&lt;br/&gt;oracle cannot withdraw excess funds if they are evil.&lt;br/&gt;&lt;br/&gt;### QA&lt;br/&gt;&lt;br/&gt;Does the DLC use a 2 of 2 multisig between Netflix and Alice?&lt;br/&gt;&lt;br/&gt;No, the DLC is unilaterally funded by Alice. This allows her to create the&lt;br/&gt;subscription without an onchain transaction, and also allows her to cancel&lt;br/&gt;the subscription at any time. She cancels the subscription by double&lt;br/&gt;spending the utxo.&lt;br/&gt;&lt;br/&gt;Can Netflix steal all the money in the funding output?&lt;br/&gt;&lt;br/&gt;No, Alice’s adaptor signatures allow Netflix to withdraw a specific amount&lt;br/&gt;of bitcoin. The change is sent back to an address Alice controls. Both of&lt;br/&gt;these outputs are protected by the adaptor signature.&lt;br/&gt;&lt;br/&gt;Is there a perverse incentive for Netflix to be the oracle and receive the&lt;br/&gt;subscription?&lt;br/&gt;&lt;br/&gt;The most Netflix can steal in this setup is one months worth of&lt;br/&gt;subscription fees across the entire customer base. In this setup, Alice is&lt;br/&gt;accepting that risk for the convenience of auto withdrawals from her&lt;br/&gt;bitcoin wallet. Remember, Alice can cancel the subscription at any time she&lt;br/&gt;wants by spending from the funding utxo.&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/20220303/874d520f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20220303/874d520f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-08T01:05:08&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfqzxnq03yzjfdmznwal38veftdnxxmezvmg85qf0v3236d32sgtszyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwer0huc</id>
    
      <title type="html">📅 Original date posted:2017-09-05 📝 Original message:Hi ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfqzxnq03yzjfdmznwal38veftdnxxmezvmg85qf0v3236d32sgtszyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwer0huc" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs8zpy6emk9ggxjjuu4whjz8e2q4jf3fd8j26nra88jrp780aalpasf3a23y&#39;&gt;nevent1q…a23y&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-09-05&lt;br/&gt;📝 Original message:Hi ZmnSCPxj,&lt;br/&gt;&lt;br/&gt;Basically, in case of a sidechain fork, the mainchain considers the longest&lt;br/&gt;&amp;gt; chain to be valid if it is longer by the SPV proof required length.  In the&lt;br/&gt;&amp;gt; above, at mainchain block 10, the sidechain H is now 4 blocks (H,G,F,E)&lt;br/&gt;&amp;gt; longer than the other sidechain fork that ended at d.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Mainchain nodes can validate this rule because the sidechain headers are&lt;br/&gt;&amp;gt; embedded in the mainchain block&amp;#39;s coinbase.  Thus, mainchain fullnodes can&lt;br/&gt;&amp;gt; validate this part of the sidechain rule of &amp;#34;longest work chain&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&lt;br/&gt;What happens in the case that the provided merkle tree hash has a invalid&lt;br/&gt;transaction in it? Wouldn&amp;#39;t this mean that the mainchain nodes would think&lt;br/&gt;the longest work chain is the valid chain, and it would kill off any&lt;br/&gt;consensus valid chain that sidechain miners are trying to construct? It&lt;br/&gt;seems that a malicious miner could extend the chain to whatever the SPV&lt;br/&gt;proof block height is and make it impossible for the chain to reorg after&lt;br/&gt;that. I guess if that is a sufficiently long block waiting period it may&lt;br/&gt;not be a realistic concern, but something to think about any way.&lt;br/&gt;&lt;br/&gt;Just a side note -- I think it should be highly recommended that the&lt;br/&gt;coinbase maturity period on the sidechain to be longer than 288 (or&lt;br/&gt;whatever we decide on the parameter). This incentivizes the s:miners to&lt;br/&gt;work together to extend the chain by working with other s:miners (otherwise&lt;br/&gt;they won&amp;#39;t be able to claim their bribes). If they do not work together&lt;br/&gt;they will not be able to spend their s:coinbase_tx outputs until they&lt;br/&gt;extend their own sidechain by 288 blocks meaning they need to tie up a&lt;br/&gt;large amount of capital to go rogue on their fork.&lt;br/&gt;&lt;br/&gt;Another interesting thing might be to use the OP_WITHDRAWPROOFVERIFY op code&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://github.com/ElementsProject/elements/blob/elements-0.14.1/src/script/interpreter.cpp#L1420&amp;gt&#34;&gt;https://github.com/ElementsProject/elements/blob/elements-0.14.1/src/script/interpreter.cpp#L1420&amp;gt&lt;/a&gt;;&lt;br/&gt;used in the elements project. Since the cannonical merkle root hashes are&lt;br/&gt;included in the mainchain, we can provide a merkle proof to the bitcoin&lt;br/&gt;blockchain to initiate a withdrawl from the sidechain. I wrote up a blog&lt;br/&gt;post on how OP_WPV works here&lt;br/&gt;&amp;lt;&lt;a href=&#34;https://medium.com/@Chris_Stewart_5/what-can-go-wrong-when-transferring-coins-into-a-sidechain-with-op-withdrawproofverify-b2f49b02ab60&amp;gt&#34;&gt;https://medium.com/@Chris_Stewart_5/what-can-go-wrong-when-transferring-coins-into-a-sidechain-with-op-withdrawproofverify-b2f49b02ab60&amp;gt&lt;/a&gt;;.&lt;br/&gt;This allows us to prove that a transaction occurred on the sidechain to&lt;br/&gt;lock up those funds.&lt;br/&gt;&lt;br/&gt;-Chris&lt;br/&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/20170905/37b0bcbe/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170905/37b0bcbe/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:05:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx9te7cxf275m0rqalswt6zpu3ev57rkuwlqw5xzcrlqxm5v498eszyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypw2r40pf</id>
    
      <title type="html">📅 Original date posted:2017-07-11 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx9te7cxf275m0rqalswt6zpu3ev57rkuwlqw5xzcrlqxm5v498eszyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypw2r40pf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvd8lqlc7w285t6jfve8acheznwqsqse8x60gc4a5f9wyjq8d7dsscynw60&#39;&gt;nevent1q…nw60&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-07-11&lt;br/&gt;📝 Original message:Concept ACK.&lt;br/&gt;&lt;br/&gt;I think you are overstating the readiness of drivechains though. I think&lt;br/&gt;the optimistic estimate for drivechains to be ready for bitcoin core is a&lt;br/&gt;year out from today. More likely the date should be early 2018. Still a lot&lt;br/&gt;of work to be done! :-)&lt;br/&gt;&lt;br/&gt;Also I don&amp;#39;t know if I would put a hard fork suggestion in the scaling map.&lt;br/&gt;If drivechains are successful they should be viewed as the way we scale --&lt;br/&gt;not hard forking the protocol. Do you still have capacity concerns if&lt;br/&gt;drivechains are successful?&lt;br/&gt;&lt;br/&gt;-Chris&lt;br/&gt;&lt;br/&gt;On Mon, Jul 10, 2017 at 11:50 AM, Paul Sztorc 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; Summary&lt;br/&gt;&amp;gt; =========&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In my opinion, Greg Maxwell&amp;#39;s scaling roadmap [1] succeeded in a few&lt;br/&gt;&amp;gt; crucial ways. One success was that it synchronized the entire Bitcoin&lt;br/&gt;&amp;gt; community, helping to bring finality to the (endless) conversations of&lt;br/&gt;&amp;gt; that time, and get everyone back to work. However, I feel that the Dec&lt;br/&gt;&amp;gt; 7, 2015 roadmap is simply too old to serve this function any longer. We&lt;br/&gt;&amp;gt; should revise it: remove what has been accomplished, introduce new&lt;br/&gt;&amp;gt; innovations and approaches, and update deadlines and projections.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Why We Should Update the Roadmap&lt;br/&gt;&amp;gt; =================================&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In a P2P system like Bitcoin, we lack authoritative info-sources (for&lt;br/&gt;&amp;gt; example, a &amp;#34;textbook&amp;#34; or academic journal), and as a result&lt;br/&gt;&amp;gt; conversations tend to have a problematic lack of progress. They do not&lt;br/&gt;&amp;gt; &amp;#34;accumulate&amp;#34;, as everyone must start over. Ironically, the scaling&lt;br/&gt;&amp;gt; conversation _itself_ has a fatal O(n^2) scaling problem.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The roadmap helped solve these problems by being constant in size, and&lt;br/&gt;&amp;gt; subjecting itself to publication, endorsement, criticism, and so forth.&lt;br/&gt;&amp;gt; Despite the (unavoidable) nuance and complexity of each individual&lt;br/&gt;&amp;gt; opinion, it was at least globally known that X participants endorsed Y&lt;br/&gt;&amp;gt; set of claims.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Unfortunately, the Dec 2015 roadmap is now 19 months old -- it is quite&lt;br/&gt;&amp;gt; obsolete and replacing it is long overdue. For example, it highlights&lt;br/&gt;&amp;gt; older items (CSV, compact blocks, versionbits) as being _future_&lt;br/&gt;&amp;gt; improvements, and makes no mention of new high-likelihood improvements&lt;br/&gt;&amp;gt; (Schnorr) or mis-emphasizes them (LN). It even contains mistakes (SegWit&lt;br/&gt;&amp;gt; fraud proofs). To read the old roadmap properly, one must already be a&lt;br/&gt;&amp;gt; technical expert. For me, this defeats the entire point of having one in&lt;br/&gt;&amp;gt; the first place.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; A new roadmap would be worth your attention, even if you didn&amp;#39;t sign it,&lt;br/&gt;&amp;gt; because a refusal to sign would still be informative (and, therefore,&lt;br/&gt;&amp;gt; helpful)!&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; So, with that in mind, let me present a first draft. Obviously, I am&lt;br/&gt;&amp;gt; strongly open to edits and feedback, because I have no way of knowing&lt;br/&gt;&amp;gt; everyone&amp;#39;s opinions. I admit that I am partially campaigning for my&lt;br/&gt;&amp;gt; Drivechain project, and also for this &amp;#34;scalability&amp;#34;/&amp;#34;capacity&amp;#34;&lt;br/&gt;&amp;gt; distinction...that&amp;#39;s because I believe in both and think they are&lt;br/&gt;&amp;gt; helpful. But please feel free to suggest edits.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I emphasized concrete numbers, and concrete dates.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; And I did NOT necessarily write it from my own point of view, I tried&lt;br/&gt;&amp;gt; earnestly to capture a (useful) community view. So, let me know how I did.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  ==== Beginning of New (&amp;#34;July 2017&amp;#34;) Roadmap Draft ====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; This document updates the previous roadmap [1] of Dec 2015. The older&lt;br/&gt;&amp;gt; statement endorsed a belief that &amp;#34;the community is ready to deliver on&lt;br/&gt;&amp;gt; its shared vision that addresses the needs of the system while upholding&lt;br/&gt;&amp;gt; its values&amp;#34;.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; That belief has not changed, but the shared vision has certainly grown&lt;br/&gt;&amp;gt; sharper over the last 18 months. Below is a list of technologies which&lt;br/&gt;&amp;gt; either increase Bitcoin&amp;#39;s maximum tps rate (&amp;#34;capacity&amp;#34;), or which make&lt;br/&gt;&amp;gt; it easier to process a higher volume of transactions (&amp;#34;scalability&amp;#34;).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; First, over the past 18 months, the technical community has completed a&lt;br/&gt;&amp;gt; number of items [2] on the Dec 2015 roadmap. VersonBits (BIP 9) enables&lt;br/&gt;&amp;gt; Bitcoin to handle multiple soft fork upgrades at once. Compact Blocks&lt;br/&gt;&amp;gt; (BIP 152) allows for much faster block propagation, as does the FIBRE&lt;br/&gt;&amp;gt; Network [3]. Check Sequence Verify (BIP 112) allows trading partners to&lt;br/&gt;&amp;gt; mutually update an active transaction without writing it to the&lt;br/&gt;&amp;gt; blockchain (this helps to enable the Lightning Network).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Second, Segregated Witness (BIP 141), which reorganizes data in blocks&lt;br/&gt;&amp;gt; to handle signatures separately, has been completed and awaits&lt;br/&gt;&amp;gt; activation (multiple BIPS). It is estimated to increase capacity by a&lt;br/&gt;&amp;gt; factor of 2.2. It also improves scalability in many ways. First, SW&lt;br/&gt;&amp;gt; includes a fee-policy which encourages users to minimize their impact on&lt;br/&gt;&amp;gt; the UTXO set. Second, SW achieves linear scaling of sighash operations,&lt;br/&gt;&amp;gt; which prevents the network from crashing when large transactions are&lt;br/&gt;&amp;gt; broadcast. Third, SW provides an efficiency gain for everyone who is not&lt;br/&gt;&amp;gt; verifying signatures, as these no longer need to be downloaded or&lt;br/&gt;&amp;gt; stored. SegWit is an enabling technology for the Lightning Network,&lt;br/&gt;&amp;gt; script versioning (specifically Schnorr signatures), and has a number of&lt;br/&gt;&amp;gt; benefits which&lt;br/&gt;&amp;gt; are unrelated to capacity [4].&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Third, the Lightning Network, which allows users to transact without&lt;br/&gt;&amp;gt; broadcasting to the network, is complete [5, 6] and awaits the&lt;br/&gt;&amp;gt; activation of SegWit. For those users who are able to make a single&lt;br/&gt;&amp;gt; on-chain transaction, it is estimated to increase both capacity and&lt;br/&gt;&amp;gt; scalability by a factor of ~1000 (although these capacity increases will&lt;br/&gt;&amp;gt; vary with usage patterns). LN also greatly improves transaction speed&lt;br/&gt;&amp;gt; and transaction privacy.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Fourth, Transaction Compression [7], observes that Bitcoin transaction&lt;br/&gt;&amp;gt; serialization is not optimized for storage or network communication. If&lt;br/&gt;&amp;gt; transactions were optimally compressed (as is possible today), this&lt;br/&gt;&amp;gt; would improve scalability, but not capacity, by roughly 20%, and in some&lt;br/&gt;&amp;gt; cases over 30%.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Fifth, Schnorr Signature Aggregation, which shrinks transactions by&lt;br/&gt;&amp;gt; allowing many transactions to have a single shared signature, has been&lt;br/&gt;&amp;gt; implemented [8] in draft form in libsecp256k1, and will likely be ready&lt;br/&gt;&amp;gt; by Q4 of 2016. One analysis [9] suggests that signature aggregation&lt;br/&gt;&amp;gt; would result in storage and bandwidth savings of at least 25%, which&lt;br/&gt;&amp;gt; would therefore increase scalability and capacity by a factor of 1.33.&lt;br/&gt;&amp;gt; The relative savings are even greater for multisignature transactions.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Sixth, drivechain [10], which allows bitcoins to be temporarily&lt;br/&gt;&amp;gt; offloaded to &amp;#39;alternative&amp;#39; blockchain networks (&amp;#34;sidechains&amp;#34;), is&lt;br/&gt;&amp;gt; currently under peer review and may be usable by end of 2017. Although&lt;br/&gt;&amp;gt; it has no impact on scalability, it does allow users to opt-in to&lt;br/&gt;&amp;gt; greater capacity, by moving their BTC to a new network (although, they&lt;br/&gt;&amp;gt; will achieve less decentralization as a result). Individual drivechains&lt;br/&gt;&amp;gt; may have different security tradeoffs (for example, a greater reliance&lt;br/&gt;&amp;gt; on UTXO commitments, or MimbleWimble&amp;#39;s shrinking block history) which&lt;br/&gt;&amp;gt; may give them individually greater scalability than mainchain Bitcoin.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Finally, the capacity improvements outlined above may not be sufficient.&lt;br/&gt;&amp;gt; If so, it may be necessary to use a hard fork to increase the blocksize&lt;br/&gt;&amp;gt; (and blockweight, sigops, etc) by a moderate amount. Such an increase&lt;br/&gt;&amp;gt; should take advantage of the existing research on hard forks, which is&lt;br/&gt;&amp;gt; substantial [11]. Specifically, there is some consensus that Spoonnet&lt;br/&gt;&amp;gt; [12] is the most attractive option for such a hardfork. There is&lt;br/&gt;&amp;gt; currently no consensus on a hard fork date, but there is a rough&lt;br/&gt;&amp;gt; consensus that one would require at least 6 months to coordinate&lt;br/&gt;&amp;gt; effectively, which would place it in the year 2018 at earliest.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; The above are only a small sample of current scaling technologies. And&lt;br/&gt;&amp;gt; even an exhaustive list of scaling technologies, would itself only be a&lt;br/&gt;&amp;gt; small sample of total Bitcoin innovation (which is proceeding at&lt;br/&gt;&amp;gt; breakneck speed).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Signed,&lt;br/&gt;&amp;gt; &amp;lt;Names Here&amp;gt;&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/&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/&lt;/a&gt;&lt;br/&gt;&amp;gt; 2015-December/011865.html&lt;br/&gt;&amp;gt; [2] &lt;a href=&#34;https://bitcoincore.org/en/2017/03/13/performance-optimizations-1/&#34;&gt;https://bitcoincore.org/en/2017/03/13/performance-optimizations-1/&lt;/a&gt;&lt;br/&gt;&amp;gt; [3] &lt;a href=&#34;http://bluematt.bitcoin.ninja/2016/07/07/relay-networks/&#34;&gt;http://bluematt.bitcoin.ninja/2016/07/07/relay-networks/&lt;/a&gt;&lt;br/&gt;&amp;gt; [4] &lt;a href=&#34;https://bitcoincore.org/en/2016/01/26/segwit-benefits/&#34;&gt;https://bitcoincore.org/en/2016/01/26/segwit-benefits/&lt;/a&gt;&lt;br/&gt;&amp;gt; [5]&lt;br/&gt;&amp;gt; &lt;a href=&#34;http://lightning.community/release/software/lnd/&#34;&gt;http://lightning.community/release/software/lnd/&lt;/a&gt;&lt;br/&gt;&amp;gt; lightning/2017/05/03/litening/&lt;br/&gt;&amp;gt; [6] &lt;a href=&#34;https://github.com/ACINQ/eclair&#34;&gt;https://github.com/ACINQ/eclair&lt;/a&gt;&lt;br/&gt;&amp;gt; [7] &lt;a href=&#34;https://people.xiph.org/~greg/compacted_txn.txt&#34;&gt;https://people.xiph.org/~greg/compacted_txn.txt&lt;/a&gt;&lt;br/&gt;&amp;gt; [8]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/ElementsProject/secp256k1-zkp/blob/&#34;&gt;https://github.com/ElementsProject/secp256k1-zkp/blob/&lt;/a&gt;&lt;br/&gt;&amp;gt; d78f12b04ec3d9f5744cd4c51f20951106b9c41a/src/secp256k1.c#L592-L594&lt;br/&gt;&amp;gt; [9] &lt;a href=&#34;https://bitcoincore.org/en/2017/03/23/schnorr-signature-aggregation/&#34;&gt;https://bitcoincore.org/en/2017/03/23/schnorr-signature-aggregation/&lt;/a&gt;&lt;br/&gt;&amp;gt; [10] &lt;a href=&#34;http://www.drivechain.info/&#34;&gt;http://www.drivechain.info/&lt;/a&gt;&lt;br/&gt;&amp;gt; [11] &lt;a href=&#34;https://bitcoinhardforkresearch.github.io/&#34;&gt;https://bitcoinhardforkresearch.github.io/&lt;/a&gt;&lt;br/&gt;&amp;gt; [12]&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/&lt;/a&gt;&lt;br/&gt;&amp;gt; 2017-February/013542.html&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;  ==== End of Roadmap Draft ====&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In short, please let me know:&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; 1. If you agree that it would be helpful if the roadmap were updated.&lt;br/&gt;&amp;gt; 2. To what extent, if any, you like this draft.&lt;br/&gt;&amp;gt; 3. Edits you would make (specifically, I wonder about Drivechain&lt;br/&gt;&amp;gt; thoughts and Hard Fork thoughts, particularly how to phrase the Hard&lt;br/&gt;&amp;gt; Fork date).&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Google Doc (if you&amp;#39;re into that kind of thing):&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://docs.google.com/document/d/1gxcUnmYl7yM0oKR9NY9zCPbBbPNoc&#34;&gt;https://docs.google.com/document/d/1gxcUnmYl7yM0oKR9NY9zCPbBbPNoc&lt;/a&gt;&lt;br/&gt;&amp;gt; mCq-jjBOQSVH-A/edit?usp=sharing&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Paul&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/20170711/8b9806dd/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170711/8b9806dd/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:04:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy5hx2em8mkkxjh2r7lklal74vqj9x0f6fd5wqxkvsgdmh6gygz2gzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwpatx5a</id>
    
      <title type="html">📅 Original date posted:2017-06-30 📝 Original message:&amp;gt;I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy5hx2em8mkkxjh2r7lklal74vqj9x0f6fd5wqxkvsgdmh6gygz2gzyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwpatx5a" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsq7e90ltdl8pttug69mp7lmhtu7reayqgprvjsy6600amy5ef4d5qq3jqyy&#39;&gt;nevent1q…jqyy&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-06-30&lt;br/&gt;📝 Original message:&amp;gt;I don&amp;#39;t understand this part.  In my scheme, a sidechain cannot reorganize&lt;br/&gt;unless the mainchain reorganizes, since the consensus loop only cares about&lt;br/&gt;matching the current block; it ignores splits and does not consider them&lt;br/&gt;valid.&lt;br/&gt;&lt;br/&gt;Maybe I am misunderstanding you, but isn&amp;#39;t this a flaw not a feature? What&lt;br/&gt;if a attacker pays a large fee to have his *invalid* block hash included in&lt;br/&gt;the bitcoin mainchain? Would this block *have* to be included in the&lt;br/&gt;sidechain&amp;#39;s blockchain forever since *it was* included in bitcoin&lt;br/&gt;blockchain?&lt;br/&gt;&lt;br/&gt;&amp;gt;Do you not provide a single sidechain&amp;#39;s h* twice in the block?  Once in&lt;br/&gt;the coinbase and once in the briber&amp;#39;s separate transaction?&lt;br/&gt;&lt;br/&gt;Yes, my BIP proposal does this.&lt;br/&gt;&lt;br/&gt;&amp;gt;In my scheme at least there is no indicator byte -- the &amp;#34;previous block&amp;#34;&lt;br/&gt;hash is the indicator of which sidechain it is extending.  From your other&lt;br/&gt;emails on this list, it seems the ratchet is for withdrawals from sidechain&lt;br/&gt;to mainchain?  If so, should it not only appear in only some of the&lt;br/&gt;sidechains (the ones which are currently doing some withdrawal?)?&lt;br/&gt;&lt;br/&gt;Maybe I am missing something here, but why we do *explicitly* commit to the&lt;br/&gt;previous block hash? Isn&amp;#39;t it implicitly committed to via SHA256(SHA256())?&lt;br/&gt;If a drivechain node tries to sync the drivechain from bitcoin&amp;#39;s commitment&lt;br/&gt;headers, it will invalidate that block since&lt;br/&gt;the block hash does not correctly reference the previous block hash. AFAICT&lt;br/&gt;there is no need to explicitly specify the previous block hash in the OP_BV&lt;br/&gt;output. In general, I don&amp;#39;t think we should assume these commitment headers&lt;br/&gt;dictate the strict ordering of blocks on the sidechain -- only potential&lt;br/&gt;blocks that&lt;br/&gt;*might* be valid. To guarantee full validity drivechain nodes will have to&lt;br/&gt;download the full block and figure out if they follow all of the consensus&lt;br/&gt;rules.&lt;br/&gt;&lt;br/&gt;This is sort of like headers first sync in bitcoin core:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://bitcoin.org/en/developer-guide#headers-first&#34;&gt;https://bitcoin.org/en/developer-guide#headers-first&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;-Chris&lt;br/&gt;&lt;br/&gt;On Thu, Jun 29, 2017 at 11:00 PM, ZmnSCPxj &amp;lt;ZmnSCPxj at protonmail.com&amp;gt; wrote:&lt;br/&gt;&lt;br/&gt;&amp;gt; Good Morning Paul,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;It seems that, in your version, the &amp;#34;bribers&amp;#34; would react to the scheme&lt;br/&gt;&amp;gt; &amp;gt;in inefficient ways, particularly when the mainchain&amp;#34;s tx-fee-rate (ie&lt;br/&gt;&amp;gt; &amp;gt;fee per Kb) is low.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;In short, there would be many bribe-attempts (each of which would take&lt;br/&gt;&amp;gt; &amp;gt;up space in mainchain blocks), almost all of which would be unsuccessful.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;In turn, miners would likely react to this, and try to improve the state&lt;br/&gt;&amp;gt; &amp;gt;of affairs by offering users the privilege of occupying transaction slot&lt;br/&gt;&amp;gt; &amp;gt;#2 (ie, the one right after the coinbase). Users would need to trust&lt;br/&gt;&amp;gt; &amp;gt;miners for this, which introduces a cost friction which is pure&lt;br/&gt;&amp;gt; &amp;gt;deadweight loss. And, it might be easier for larger/older miners to be&lt;br/&gt;&amp;gt; &amp;gt;trustworthy than smaller/newer ones.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I understand.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;Your way is actually very similar to mine. Mine _forces_ the bribe to be&lt;br/&gt;&amp;gt; &amp;gt;in the earliest txn (the coinbase) and to only occur once. Yours doesn&amp;#34;t&lt;br/&gt;&amp;gt; &amp;gt;do anything to refund the briber, if the sidechain (but not the&lt;br/&gt;&amp;gt; &amp;gt;mainchain) reorganizes (as it can easily do, if an older sidechain&lt;br/&gt;&amp;gt; &amp;gt;parent is extended while the mainchain proceeds normally). This creates&lt;br/&gt;&amp;gt; &amp;gt;additional risk.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t understand this part.  In my scheme, a sidechain cannot reorganize&lt;br/&gt;&amp;gt; unless the mainchain reorganizes, since the consensus loop only cares about&lt;br/&gt;&amp;gt; matching the current block; it ignores splits and does not consider them&lt;br/&gt;&amp;gt; valid.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; But I suppose you are considering something like the Ethereum mutability&lt;br/&gt;&amp;gt; feature, which I do not think is something you would want in a sidechain.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;I think mine is also much more space-efficient. Even if ours each had&lt;br/&gt;&amp;gt; &amp;gt;exactly one h* per sidechain per block, it seems that I only require one&lt;br/&gt;&amp;gt; &amp;gt;hash to be communicated (plus an indicator byte, and a ~2 byte counter&lt;br/&gt;&amp;gt; &amp;gt;for the ratchet), whereas you require two. Since its overhead per&lt;br/&gt;&amp;gt; &amp;gt;sidechain per block, it actually might really add up.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Do you not provide a single sidechain&amp;#39;s h* twice in the block?  Once in&lt;br/&gt;&amp;gt; the coinbase and once in the briber&amp;#39;s separate transaction?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; In my scheme at least there is no indicator byte -- the &amp;#34;previous block&amp;#34;&lt;br/&gt;&amp;gt; hash is the indicator of which sidechain it is extending.  From your other&lt;br/&gt;&amp;gt; emails on this list, it seems the ratchet is for withdrawals from sidechain&lt;br/&gt;&amp;gt; to mainchain?  If so, should it not only appear in only some of the&lt;br/&gt;&amp;gt; sidechains (the ones which are currently doing some withdrawal?)?&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Regards,&lt;br/&gt;&amp;gt; ZmnSCPxj&lt;br/&gt;&amp;gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170630/fdacfffe/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170630/fdacfffe/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:03:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgrhkd3exnfj8fdtdd73je00x9hun84p3zvkjvhg2ff23s0fxw0zszyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwhcfgp9</id>
    
      <title type="html">📅 Original date posted:2017-06-27 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgrhkd3exnfj8fdtdd73je00x9hun84p3zvkjvhg2ff23s0fxw0zszyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypwhcfgp9" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvawgvcprpwer2fmva63rkvqs58x80ltwqjn0g9cjy2fsnks855hsy9x64k&#39;&gt;nevent1q…x64k&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-06-27&lt;br/&gt;📝 Original message:&amp;lt;pre&amp;gt;&lt;br/&gt;  BIP: &amp;lt;BIP number&amp;gt;&lt;br/&gt;  Layer: Consensus (Soft fork)&lt;br/&gt;  Title: OP_BRIBEVERIFY&lt;br/&gt;  Author: Chris Stewart &amp;lt;chris at suredbits.com&amp;gt;&lt;br/&gt;  Status: Draft&lt;br/&gt;  Type: Standards Track&lt;br/&gt;  Created: 2017-06-27&lt;br/&gt;&amp;lt;/pre&amp;gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;==Abstract==&lt;br/&gt;&lt;br/&gt;This BIP describes a new opcode, OP_BRIBEVERIFY, for the Bitcoin&lt;br/&gt;scripting system that allows for a user to bribe a miner to include a hash&lt;br/&gt;in the coinbase transaction&amp;#39;s output.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;==Summary==&lt;br/&gt;&lt;br/&gt;BRIBEVERIFY redefines the existing NOP4 opcode. When executed, if the given&lt;br/&gt;critical hash is included at the given vout index in the coinbase&lt;br/&gt;transaction&lt;br/&gt;the script evaluates to true. Otherwise, the script will fail.&lt;br/&gt;&lt;br/&gt;This allows sidechains to be merged mined against&lt;br/&gt;bitcoin without burdening bitcoin miners with extra resource requirements.&lt;br/&gt;&lt;br/&gt;==Motivation==&lt;br/&gt;&lt;br/&gt;The current political climate of bitcoin is extremely contentious. Many&lt;br/&gt;community members&lt;br/&gt;have different visions of what bitcoin is. This op code is meant to&lt;br/&gt;enable [&lt;a href=&#34;http://www.truthcoin.info/blog/blind-merged-mining/&#34;&gt;http://www.truthcoin.info/blog/blind-merged-mining/&lt;/a&gt; Blind Merge&lt;br/&gt;Mining].&lt;br/&gt;This enables sidechains in Bitcoin. With OP_BRIBEVERIFY, sidechains miners&lt;br/&gt;can&lt;br/&gt;bribe bitcoin miners to to include their block hash in the bitcoin&lt;br/&gt;blockchain. If their block&lt;br/&gt;is included in the coinbase transaction&amp;#39;s vout, it is assumed that block is&lt;br/&gt;a mined block on the sidechain.&lt;br/&gt;&lt;br/&gt;This will allow various factions of the community to realize their vision&lt;br/&gt;on their own separate&lt;br/&gt;blockchain that is interoperable with the bitcoin blockchain. This allows&lt;br/&gt;those factions to use&lt;br/&gt;bitcoin as a &amp;#39;reserve currency&amp;#39; for their own network.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;===Commitment Structure===&lt;br/&gt;&lt;br/&gt;A new block rule is added which requires that the miner&amp;#39;s coinbase reward&lt;br/&gt;be at index 0 in the coinbase transaction&amp;#39;s output vector.&lt;br/&gt;&lt;br/&gt;It also fixes the witness commitment output to be at index 1 of the&lt;br/&gt;coinbase transaction&amp;#39;s output vector.&lt;br/&gt;&lt;br/&gt;This is needed so we can reliably tell what vout corresponds to what&lt;br/&gt;drivechain. For instance, the mimblewimble sidechain&lt;br/&gt;could correspond to index 2 of the vector outputs on the coinbase&lt;br/&gt;transaction.&lt;br/&gt;&lt;br/&gt;The commitment is recorded in a &amp;lt;code&amp;gt;scriptPubKey&amp;lt;/code&amp;gt; of the coinbase&lt;br/&gt;transaction. It must be at least 34 bytes in size&lt;br/&gt;   1-byte - OP_RETURN (0x6a)&lt;br/&gt;   1-byte - Push the following 32 bytes (0x20)&lt;br/&gt;  32-byte - block hash&lt;br/&gt;&lt;br/&gt;the 35th byte and onward have no consensus meaning.&lt;br/&gt;&lt;br/&gt;===OP_BRIBEVERIFY op code===&lt;br/&gt;&lt;br/&gt;This op code reads two arguments from the stack. The stack top is expected&lt;br/&gt;to be a sidechain id for which this user attempting to blind merge mine for.&lt;br/&gt;The next element on the stack is expected to be a block hash. This op code&lt;br/&gt;looks into the coinbase transaction&amp;#39;s output vector at the given index&lt;br/&gt;(which is derived from the sidechain id) and checks&lt;br/&gt;to see if the hash in the block matches the hash inside of the BRIBEVERIFY&lt;br/&gt;program. If the hashes match, the OP_BRIBEVERIFY acts as an OP_NOP. If the&lt;br/&gt;comparison between the two hashes fail, the script fails.&lt;br/&gt;&lt;br/&gt;===BRIBEVERIFY program===&lt;br/&gt;&lt;br/&gt;A standard BRIBEVERIFY program has the format:&lt;br/&gt;  1-byte - Push the following 32 bytes (0x20)&lt;br/&gt; 32-byte - block hash&lt;br/&gt;  1 byte - Push operation? (needed if number can&amp;#39;t be encoded as OP_0 -&lt;br/&gt;OP_16)&lt;br/&gt;  1 byte - sidechain id&lt;br/&gt;  1 byte - OP_BRIBEVERIFY op code&lt;br/&gt;&lt;br/&gt;==Detailed Specification==&lt;br/&gt;&lt;br/&gt;Refer to the reference implementation, reproduced below, for the precise&lt;br/&gt;semantics and detailed rationale for those semantics.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; case OP_NOP4:&lt;br/&gt; {&lt;br/&gt;    //format: block_hash sidechain_id OP_BRIBEVERIFY&lt;br/&gt;    if (!(flags &amp;amp; SCRIPT_VERIFY_BRIBEVERIFY)) {&lt;br/&gt;        // not enabled; treat as a NOP4&lt;br/&gt;        if (flags &amp;amp; SCRIPT_VERIFY_DISCOURAGE_UPGRADABLE_NOPS) {&lt;br/&gt;            return set_error(serror, SCRIPT_ERR_DISCOURAGE_UPGRADABLE_NOPS);&lt;br/&gt;        }&lt;br/&gt;        break;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    if (stack.size() &amp;lt; 2)&lt;br/&gt;        return set_error(serror, SCRIPT_ERR_INVALID_STACK_OPERATION);&lt;br/&gt;&lt;br/&gt;    const CScriptNum scriptNumSidechainId(stacktop(-1),fRequireMinimal);&lt;br/&gt;    uint8_t nSidechainId;&lt;br/&gt;    if (!checker.CheckSidechainId(scriptNumSidechainId,nSidechainId)) {&lt;br/&gt;        return set_error(serror, SCRIPT_ERR_UNKNOWN_SIDECHAIN);&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    // Check block hash&lt;br/&gt;    bool fHashCritical =&lt;br/&gt;checker.CheckCriticalHash(stacktop(-2),nSidechainId);&lt;br/&gt;    if (!fHashCritical) {&lt;br/&gt;        return set_error(serror, SCRIPT_ERR_UNSATISFIED_BRIBE);&lt;br/&gt;    }&lt;br/&gt;    break;&lt;br/&gt; }&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/Christewart/bitcoin/blob/94b6f33f2278c42d4d8758a3c8ffe2078e4ec933/src/script/interpreter.cpp#L427&#34;&gt;https://github.com/Christewart/bitcoin/blob/94b6f33f2278c42d4d8758a3c8ffe2078e4ec933/src/script/interpreter.cpp#L427&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/drivechain-project/bitcoin/pull/13&#34;&gt;https://github.com/drivechain-project/bitcoin/pull/13&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;==Deployment==&lt;br/&gt;&lt;br/&gt;TODO&lt;br/&gt;&lt;br/&gt;==Credits==&lt;br/&gt;&lt;br/&gt;Credit to Paul Sztorc for the original idea of Blind Merge Mined sidechains.&lt;br/&gt;&lt;br/&gt;Credit to CryptAxe for writing the foundational layer of software for&lt;br/&gt;drivechains so I could implement OP_BRIBEVERIFY.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;==References==&lt;br/&gt;&lt;br/&gt;Blind Merge Mined Sidechains -&lt;br/&gt;&lt;a href=&#34;http://www.truthcoin.info/blog/blind-merged-mining/&#34;&gt;http://www.truthcoin.info/blog/blind-merged-mining/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Mailing list discussion -&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014408.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014408.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;==Copyright==&lt;br/&gt;&lt;br/&gt;This document is placed in the public domain.&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/20170627/bd5730bf/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170627/bd5730bf/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:03:39&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsf687ujvq9e0cfz4kajun0fu2nynpsv3430fn58tlwcnw28u88j0czyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypw99pnky</id>
    
      <title type="html">📅 Original date posted:2017-04-14 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsf687ujvq9e0cfz4kajun0fu2nynpsv3430fn58tlwcnw28u88j0czyr378qfu5ke0g5gh4ep29gwfnawxh5tjcy26esjnspn24kgk23ypw99pnky" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs9egc9j5vqksdzs27sc8n854tz5mcentfte57edpjcmlau7rghuzqu3pp25&#39;&gt;nevent1q…pp25&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-14&lt;br/&gt;📝 Original message:&amp;gt;Criticizing 148 without suggesting a specific alternative leaves the&lt;br/&gt;community in disarray.&lt;br/&gt;&lt;br/&gt;I really disagree with this sentiment, you don&amp;#39;t need to provide&lt;br/&gt;alternatives to criticize a technical proposal. I don&amp;#39;t like this &amp;#34;active&lt;br/&gt;segwit at all costs&amp;#34; theme that has been going around the community. I am a&lt;br/&gt;fan of segwit, but we shouldn&amp;#39;t push things through in an unsafe manner.&lt;br/&gt;&lt;br/&gt;&amp;gt;If 148 causes orphaning and a fork, I don&amp;#39;t think such really matters in&lt;br/&gt;the long term.  The non-SegWit miners will probably just quickly give up&lt;br/&gt;their orphans once they realize that money users like being able to have&lt;br/&gt;non-mutable TX IDs.  If they do create a long lasting branch... well that&lt;br/&gt;is good too, I&amp;#39;d be happy to no longer have them in our community.  Good&lt;br/&gt;luck to them in creating a competitive money, so that we can all enjoy&lt;br/&gt;lower transaction fees.&lt;br/&gt;&lt;br/&gt;This seems like a lot of reckless hand waving to me.&lt;br/&gt;&lt;br/&gt;Food for thought, why are we rejecting *all* blocks that do not signal&lt;br/&gt;segwit? Can&amp;#39;t we just reject blocks that *do not* signal segwit, but *do*&lt;br/&gt;contain segwit transactions? It seems silly to me that if a miner mines a&lt;br/&gt;block with all pre segwit txs to reject that block. Am I missing something&lt;br/&gt;here?&lt;br/&gt;&lt;br/&gt;-Chris&lt;br/&gt;&lt;br/&gt;On Fri, Apr 14, 2017 at 11:50 AM, praxeology_guy 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; Gregory Maxwell,&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Criticizing 148 without suggesting a specific alternative leaves the&lt;br/&gt;&amp;gt; community in disarray.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I know you are emphasizing patience.  But at the same time, with your&lt;br/&gt;&amp;gt; patience we are allowing ourselves to get dicked for longer than necessary.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I think that core could easily develop code that could create a&lt;br/&gt;&amp;gt; solid/reliable date/height based activation to allow miners to create&lt;br/&gt;&amp;gt; SegWit block candidates and having nodes fully verify them.  Shaolinfry is&lt;br/&gt;&amp;gt; the only person Ive seen actually make such a proposal:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/&lt;/a&gt;&lt;br/&gt;&amp;gt; 2017-April/014049.html.  His makes it so that SegWit default gets&lt;br/&gt;&amp;gt; activated at the end of the BIP9 signalling timeframe instead of default&lt;br/&gt;&amp;gt; leaving it non-activated.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; I agree that 148 is is not ideal.  Non-SegWit signaling blocks are not a&lt;br/&gt;&amp;gt; Denial of Service, given that other activation methods are available.&lt;br/&gt;&amp;gt; Someone just needs to code something up that is better that we can all use&lt;br/&gt;&amp;gt; in a satisfying time frame.  So far 148 is the most practical and reliable&lt;br/&gt;&amp;gt; method I&amp;#39;m aware of.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; If 148 causes orphaning and a fork, I don&amp;#39;t think such really matters in&lt;br/&gt;&amp;gt; the long term.  The non-SegWit miners will probably just quickly give up&lt;br/&gt;&amp;gt; their orphans once they realize that money users like being able to have&lt;br/&gt;&amp;gt; non-mutable TX IDs.  If they do create a long lasting branch... well that&lt;br/&gt;&amp;gt; is good too, I&amp;#39;d be happy to no longer have them in our community.  Good&lt;br/&gt;&amp;gt; luck to them in creating a competitive money, so that we can all enjoy&lt;br/&gt;&amp;gt; lower transaction fees.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; SegWit has already undergone enough testing.  It is time to activate it.&lt;br/&gt;&amp;gt;&lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Praxeology Guy&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/20170414/065e4fee/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170414/065e4fee/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:00:03&#43;02:00</updated>
  </entry>

</feed>