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




  <entry>
    <id>https://nostr.ae/nevent1qqswcs3aylhh6j5rsw2ep7h8td0nh7d8ep0umrr8xr4cc5qek99lc9czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwjlu789</id>
    
      <title type="html">📅 Original date posted:2019-03-21 📝 Original message: &amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswcs3aylhh6j5rsw2ep7h8td0nh7d8ep0umrr8xr4cc5qek99lc9czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwjlu789" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswgyv7nhldykc9q2j06sqsh8upw49ufmvqwy7uqeu7glypgsumymspahtx6&#39;&gt;nevent1q…htx6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-03-21&lt;br/&gt;📝 Original message:&lt;br/&gt;&amp;gt; On 20 Mar 2019, at 4:07 PM, ZmnSCPxj via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi aj,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Re-reading again, I think perhaps I was massively confused by this:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; - alternatively, we could require every script to have a valid signature&lt;br/&gt;&amp;gt;&amp;gt; that commits to the input. In that case, you could do eltoo with a&lt;br/&gt;&amp;gt;&amp;gt; script like either:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &amp;lt;A&amp;gt; CHECKSIGVERIFY &amp;lt;B&amp;gt; CHECKSIG&lt;br/&gt;&amp;gt;&amp;gt; or &amp;lt;P&amp;gt; CHECKSIGVERIFY &amp;lt;Q&amp;gt; CHECKSIG&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; where A is Alice&amp;#39;s key and B is Bob&amp;#39;s key, P is muSig(A,B) and Q is&lt;br/&gt;&amp;gt;&amp;gt; a key they both know the private key for. In the first case, Alice&lt;br/&gt;&amp;gt;&amp;gt; would give Bob a NOINPUT sig for the tx, and when Bob wanted to publish&lt;br/&gt;&amp;gt;&amp;gt; Bob would just do a SIGHASH_ALL sig with his own key. In the second,&lt;br/&gt;&amp;gt;&amp;gt; Alice and Bob would share partial NOINPUT sigs of the tx with P, and&lt;br/&gt;&amp;gt;&amp;gt; finish that when they wanted to publish.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Do you mean that *either* of the above two scripts is OK, *or* do you mean they are alternatives within a single MAST or `OP_IF`?&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;It means either.&lt;br/&gt;&lt;br/&gt;If you use &amp;lt;A&amp;gt; CHECKSIGVERIFY &amp;lt;B&amp;gt; CHECKSIG style, A and B will exchange the NOINPUT sig, and they will add the required non-NOINPUT sig when needed.&lt;br/&gt;&lt;br/&gt;If you use &amp;lt;muSig(A,B)&amp;gt; CHECKVERIFY &amp;lt;Q&amp;gt; CHECKSIG, A and B will co-sign the muSig(A,B) with NOINPUT. They will also share the private key of Q, so they could produce a non-NOINPUT sig when needed.&lt;br/&gt;&lt;br/&gt;The first style is slightly easier as it doesn’t need muSig. But with 3 or more parties, the second style is more efficient.&lt;br/&gt;&lt;br/&gt;However, if you use watchtower, you have to use the second style. That means you need to share the private key for Q with the watchtower, That also means the watchtower will have the ability to reply the NOINPU muSig. But it is still strictly better than anyone-can-replay.&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/lightning-dev/attachments/20190321/7a2ef867/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20190321/7a2ef867/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-09T14:54:31&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs2hkz6k7ra9l3gkyv6swd8zg2t3ht5dd9qeqwcjz2z50s8x5q650szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwt8qxu5</id>
    
      <title type="html">📅 Original date posted:2019-05-26 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs2hkz6k7ra9l3gkyv6swd8zg2t3ht5dd9qeqwcjz2z50s8x5q650szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwt8qxu5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsve5fuaekyrtxa2m2j4qrpmzrl7ql4m5ka7vtxzvszcugfvgjp9uqdxqt22&#39;&gt;nevent1q…qt22&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-05-26&lt;br/&gt;📝 Original message:This is not how it works. While the transaction creator may know which inputs are segwit, the validators have no way to tell until they look up the UTXO set.&lt;br/&gt;&lt;br/&gt;In a transaction, all information about an input the validators have is the 36-byte outpoint (txid &#43; index). Just by looking at the outpoint, there is no way to tell whether it is segwit-enabled or not. So there needs to be a way to tell the validator that “the witness for this input is empty”, and it is the “00”.&lt;br/&gt;&lt;br/&gt;&amp;gt; On 27 May 2019, at 12:18 AM, Aymeric Vitte &amp;lt;vitteaymeric at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; ……. for the 00 number of witness&lt;br/&gt;&amp;gt; data for non segwit inputs the one that is doing the transaction knows&lt;br/&gt;&amp;gt; which inputs are segwit or not, then parsing the transaction you can&lt;br/&gt;&amp;gt; associate the correct input to the correct witness data, without the&lt;br/&gt;&amp;gt; need of 00, so I must be missing the use case
    </content>
    <updated>2023-06-07T20:18:24&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqcxgahk0k5zxfp5fz6v0v67q8mmwqcghrdh93e47k8gk833cfltgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwvsm5gw</id>
    
      <title type="html">📅 Original date posted:2019-05-26 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqcxgahk0k5zxfp5fz6v0v67q8mmwqcghrdh93e47k8gk833cfltgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwvsm5gw" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsd4k24wvj2ldre6u57zxn4qafr9fxtmanhfk2gjmqawe5s39zvcmgkryneg&#39;&gt;nevent1q…yneg&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-05-26&lt;br/&gt;📝 Original message:&amp;gt; On 26 May 2019, at 7:56 AM, Aymeric Vitte via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I realized recently that my segwit implementation was not correct,&lt;br/&gt;&amp;gt; basically some time ago, wrongly reading the specs (and misleaded by&lt;br/&gt;&amp;gt; what follows), I thought that scriptsig would go into witness data as it&lt;br/&gt;&amp;gt; was, but that&amp;#39;s not the case, op_pushdata is replaced by varlen&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;Witness is not script. There is no op_pushdata or any other opcodes.&lt;br/&gt;&lt;br/&gt;Witness is a stack. For each input, the witness starts with a CCompactSize for the number of stack elements for this input. Each stack element in turns starts with a CCompactSize for the size of this element, followed by the actual data&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; Now reading correctly the specs, they seem to be not totally correct,&lt;br/&gt;&amp;gt; then the first question is: why OP_0 is 00 in witness data and not 0100?&lt;br/&gt;&amp;gt; Does this apply to other op_codes? This does not look logical at all&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;A “00” element means the size of this element is zero. Since it’s zero size, no data is followed. This will create an empty element on the stack. It’s effectively same as OP_0 (Again, witness is not script)&lt;br/&gt;&lt;br/&gt;A “0100” element means the element size is one, and the data for this element is “00”. So it will leave an 1-byte element on the stack.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; The second question is: why for non segwit inputs there is a 00 length&lt;br/&gt;&amp;gt; in segwit data, what is the rational for that? It should just be nothing&lt;br/&gt;&amp;gt; since you don&amp;#39;t need this to reconciliate things&lt;br/&gt;&lt;br/&gt;The “00” here means &amp;#34;this input has no witness stack element”. You need this even for non segwit inputs, because there is no way to tell whether an input is segwit-enabled or not, until you look up the UTXO, which might not be always available. Transaction serialization couldn’t rely on contextual information.&lt;br/&gt;&lt;br/&gt;However, if all inputs have no stack element, the spec requires you to always use the non-segwit serialization.&lt;br/&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;
    </content>
    <updated>2023-06-07T20:18:22&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw46fuev2mnklzngzfu9u0fpkruqt8perqgsm97tg0quv889tk37szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw4pkc7q</id>
    
      <title type="html">📅 Original date posted:2019-02-09 📝 Original message:In a 3 ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw46fuev2mnklzngzfu9u0fpkruqt8perqgsm97tg0quv889tk37szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw4pkc7q" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0jdgfkmzm5rna7ss6hufytxy96w8ks6n03trxg3yx9hfau8jn05sff7uxp&#39;&gt;nevent1q…7uxp&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2019-02-09&lt;br/&gt;📝 Original message:In a 3 parties channel, let’s say the balance for A, B, C is 2, 3, 6BTC respectively, there are few ways they could make the settlement tx.&lt;br/&gt;&lt;br/&gt;The first type we may call it “simple settlement”, which has 3 outputs with A=2, B=3, C=6.&lt;br/&gt;&lt;br/&gt;The second type we may call it “fully combinatorial settlement”, which has 3 outputs with (A &amp;amp; B), (B &amp;amp; C), and (A &amp;amp; C). The value distribution is flexible, but never exceed the total balance of the involved parties. For example, (A &amp;amp; B) may have any value between 0 and 5BTC. For the following example, I will use (A &amp;amp; B) = 3; (B &amp;amp; C) = 6; (A &amp;amp; C) = 2, but there are infinitely many valid combinations.&lt;br/&gt;&lt;br/&gt;The third type we may call it “partially combinatorial settlement”. It may have 2 multi-sig outputs, for example, (A &amp;amp; B) = 4 and (B &amp;amp; C) = 7; or 1 multi-sig output and 1 single-sig output, for example, (A &amp;amp; B) = 5 and C=6 (known as &amp;#34;semi-cooperative channel closing” SCCC in my last post)&lt;br/&gt;&lt;br/&gt;I’ll just focus on the fully combinatorial settlement. The partial type works in the same way, with benefits and limitations.&lt;br/&gt;&lt;br/&gt;In a combinatorial settlement, the multi-sig outputs are actually eltoo-style scripts. Therefore, A and B will further distribute the value of (A &amp;amp; B) by a 2-party eltoo channel (“branch channels&amp;#34;). Again, there are infinitely many valid ways to distribute the values. If the AB branch channel is distributed as A=1 and B=2, then the BC channel must be B=1 and C=5, and the AC channel must be A=1 and C=1.&lt;br/&gt;&lt;br/&gt;A clear benefit of this model is that any 2 parties could trade with each other, in the absence of any other party(s), as long as there is enough liquidity in their branch channel. There is also no way to “fork” the state, because liquidity is restricted to each branch channel. In some way, this is like the existing lightning network where the 3 parties have direct channel with each other. However, this is superior to lightning network, because when the 3 parties are online simultaneously, they could re-distribute the channel capacities without closing any channels. They could even change it to a partially combinatorial settlement. If they find that A and C rarely trade with each other, they could remove the (A &amp;amp; C) output, and improve the capacities of the remaining channels. If C is going offline for a week, they could make it (A &amp;amp; B), C, (aka. SCCC) which will maximise the capacity of the AB branch channel, and minimise the cost in case C is not coming back.&lt;br/&gt;&lt;br/&gt;A problem with combinatorial settlement is the increased costs of uncooperative settlement. It is more expensive, as more parties are missing. Simple settlement has the same settlement cost for any number of missing party. However, even if one party is missing, a simple settled channel will cease to function and force an immediate on-chain settlement. In combinatorial settlement, the surviving parties may keep trading, may or may not with reduced capacity depending on the exact settlement model, and in the meantime hope that the missing parties may return.&lt;br/&gt;&lt;br/&gt;It requires 6 outputs for 4 parties doing fully combinatorial settlement, 10 outputs for 5 parties, 15 outputs for 6 parties, etc. However, in a many parties situation, not every parties might want to trade with all the other parties, and those branch channels might be omitted to improve the capacities of the other channels. If some pairs want to trade without a direct branch channel, they might try to find a third (internal) party to forward the tx. When the next time all parties are online, they could rearrange the branch channel capacities at no cost.&lt;br/&gt;&lt;br/&gt;The combinatorial settlement model could be generalised to a hierarchical settlement model, where we might have 4 settlement outputs (A&amp;amp;B&amp;amp;C), (A&amp;amp;B&amp;amp;D), (A&amp;amp;C&amp;amp;D), (B&amp;amp;C&amp;amp;D) for a 4-party channel, and each settlement output will have 3 branch channels. If A is missing, for example, we will still have one BC branch channel, one BD branch channel, one CD branch channel, and one BCD 3-party branch channel. The benefit of having a BCD 3-party branch channel is the 3 parties could rearrange the channel capacities without involving A. Let’s say D is going for vacation, he could do a SCCC in the BCD branch channel to maximise the capacity of its BC channel. Without the involvement of A, however, the capacities of the other BC, BD, and CD branch channels are not modifiable, and B and C’s balance in the BD/CD channels are frozen during the absence of D.&lt;br/&gt;&lt;br/&gt;As the number of parties increase, the number of settlement txs will grow factorially in a fully hierarchical settlement model, and will soon be out-of-control. The result could be catastrophic if many parties are gone. So the group needs to continuously evaluate the risks of each party being missing, and modify the settlement model accordingly.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 9 Feb 2019, at 6:01 PM, Alejandro Ranchal Pedrosa via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Side note: I was not able to come up with an similar, eltoo-like protocol that works&lt;br/&gt;&amp;gt;&amp;gt; if you can&amp;#39;t predict in advance who will become absent.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt; An eltoo-like protocol that works (without going on-chain) if you can&amp;#39;t predict in advance who will become absent would be a childchain. If the off-chain protocol can continue updating in the abscence of other parties, it means that other parties&amp;#39; signatures must not be required when they are not involved in the off-chain state update. If other parties&amp;#39; signatures must not be required, there must be a way of having a common verifiable &amp;#39;last state&amp;#39; to prevent a party to simultaneously &amp;#39;fork&amp;#39; the state with two different parties, and double-spend. A solution for this is a childchain for Bitcoin. An example of this is what is known as a &amp;#39;Broken Factory&amp;#39; attack [1] (&lt;a href=&#34;https://bitcoin.stackexchange.com/questions/77434/how-does-channel-factory-act/81005#81005&#34;&gt;https://bitcoin.stackexchange.com/questions/77434/how-does-channel-factory-act/81005#81005&lt;/a&gt;)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; If the expectation is that the unresponsive party returns, fungibility is&lt;br/&gt;&amp;gt;&amp;gt; not reduced due to output tagging because the above scheme can be used&lt;br/&gt;&amp;gt;&amp;gt; off-chain until the original channel can be continued.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I believe that in many cases other parties won&amp;#39;t be able to continue until the unresponsive parties go back online. That might be true in particular scenarios, but generally speaking, the party might have gone unresponsive during a factory-level update (i.e. off-chain closing and opening of channels), while some parties might have given out their signature for the update without receiving a fully signed transaction. In this case they do not even know which channel they have open (the one of the old state that they have fully signed, or the one for the new state that they have given out their signature for). This is known as a &amp;#39;Stale Factory&amp;#39;, and can be exploited by an adversary in a &amp;#39;Stale Factory&amp;#39; attack [1]. Even if they knew which state they are in (i.e. the party went unresponsive but not during a factory-level update), some of them might have run out of funds in some of their channels of the factory, and might want to update, while they will not be willing to wait for a party to go back online (something for which they also have zero guarantees of).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; An eltoo-like protocol that works (allowing going on-chain) if you can&amp;#39;t in advance who will become absent, then this is precisely why &amp;#39;Transaction Fragments&amp;#39; have been suggested. They allow an eltoo-like protocol even when one cannot predict in advance who will become absent, or malicious (by publishing invalid states), cause the non-absent parties can unite their fragments and create a valid spendable factory-level transaction that effectively kicks out the malicious parties, while leaving the rest of the factory as it was. To the best of my understanding, the eltoo original proposal also allows this though.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Alejandro.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1]: Scalable Lightning Factories for Bitcoin, &lt;a href=&#34;https://eprint.iacr.org/2018/918.pdf&#34;&gt;https://eprint.iacr.org/2018/918.pdf&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 08/02/2019 20:01, Jonas Nick via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; Output tagging may result in reduced fungibility in multiparty eltoo channels.&lt;br/&gt;&amp;gt;&amp;gt; If one party is unresponsive, the remaining participants want to remove&lt;br/&gt;&amp;gt;&amp;gt; the party from the channel without downtime. This is possible by creating&lt;br/&gt;&amp;gt;&amp;gt; settlement transactions which pay off the unresponsive party and fund a new&lt;br/&gt;&amp;gt;&amp;gt; channel with the remaining participants.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; When the party becomes unresponsive, the channel is closed by broadcasting the&lt;br/&gt;&amp;gt;&amp;gt; update transaction as usual. As soon as that happens the remaining&lt;br/&gt;&amp;gt;&amp;gt; participants can start to update their new channel. Their update signatures&lt;br/&gt;&amp;gt;&amp;gt; must use SIGHASH_NOINPUT. This is because in eltoo the settlement txid is not&lt;br/&gt;&amp;gt;&amp;gt; final (because update tx is not confirmed and may have to rebind to another&lt;br/&gt;&amp;gt;&amp;gt; output). Therefore, the funding output of the new channel must be NOINPUT&lt;br/&gt;&amp;gt;&amp;gt; tagged. Assuming the remaining parties later settle cooperatively, this loss&lt;br/&gt;&amp;gt;&amp;gt; of fungibility would not have happened without output tagging.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; funding output          update output                                    settlement outputs              update output&lt;br/&gt;&amp;gt;&amp;gt; [ A &amp;amp; B &amp;amp; C ] -&amp;gt; ... -&amp;gt; [ (A &amp;amp; B &amp;amp; C &amp;amp; state CLTV) | (As &amp;amp; Bs &amp;amp; Cs) ] -&amp;gt; [ NOINPUT tagged: (A&amp;#39; &amp;amp; B&amp;#39;), -&amp;gt; ...&lt;br/&gt;&amp;gt;&amp;gt;                                                                            C&amp;#39; ]&lt;br/&gt;&amp;gt;&amp;gt; If the expectation is that the unresponsive party returns, fungibility is&lt;br/&gt;&amp;gt;&amp;gt; not reduced due to output tagging because the above scheme can be used&lt;br/&gt;&amp;gt;&amp;gt; off-chain until the original channel can be continued.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Side note: I was not able to come up with an similar, eltoo-like protocol that works&lt;br/&gt;&amp;gt;&amp;gt; if you can&amp;#39;t predict in advance who will become absent.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On 12/13/18 12:32 PM, Johnson Lau via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; NOINPUT is very powerful, but the tradeoff is the risks of signature replay. While the key holders are expected not to reuse key pair, little could be done to stop payers to reuse an address. Unfortunately, key-pair reuse has been a social and technical norm since the creation of Bitcoin (the first tx made in block 170 reused the previous public key). I don’t see any hope to change this norm any time soon, if possible at all.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; As the people who are designing the layer-1 protocol, we could always blame the payer and/or payee for their stupidity, just like those people laughed at victims of Ethereum dumb contracts (DAO, Parity multisig, etc). The existing bitcoin script language is so restrictive. It disallows many useful smart contracts, but at the same time prevented many dumb contracts. After all, “smart” and “dumb” are non-technical judgement. The DAO contract has always been faithfully executed. It’s dumb only for those invested in the project. For me, it was just a comedy show.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; So NOINPUT brings us more smart contract capacity, and at the same time we are one step closer to dumb contracts. The target is to find a design that exactly enables the smart contracts we want, while minimising the risks of misuse.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The risk I am trying to mitigate is a payer mistakenly pay to a previous address with the exactly same amount, and the previous UTXO has been spent using NOINPUT. Accidental double payment is not uncommon. Even if the payee was honest and willing to refund, the money might have been spent with a replayed NOINPUT signature. Once people lost a significant amount of money this way, payers (mostly exchanges) may refuse to send money to anything other than P2PKH, native-P2WPKH and native-P2WSH (as the only 3 types without possibility of NOINPUT)&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; The proposed solution is that an output must be “tagged” for it to be spendable with NOINPUT, and the “tag” must be made explicitly by the payer. There are 2 possible ways to do the tagging:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 1. A certain bit in the tx version must be set&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; 2. A certain bit in the scriptPubKey must be set&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I will analyse the pros and cons later.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Using eltoo as example. The setup utxo is a simple 2-of-2 multisig, and should not be tagged. This makes it indistinguishable from normal 1-of-1 utxo. The trigger tx, which spends the setup utxo, should be tagged, so the update txs could spend the trigger utxo with NOINPUT. Similarly, all update txs should be tagged, so they could be spent by other update txs and settlement tx with NOINPUT. As the final destination, there is no need to tag in the settlement tx.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; In payer’s perspective, tagging means “I believe this address is for one-time-use only” Since we can’t control how other people manage their addresses, we should never do tagging when paying to other people.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; I mentioned 2 ways of tagging, and they have pros and cons. First of all, tagging in either way should not complicate the eltoo protocol in anyway, nor bring extra block space overhead.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; A clear advantage of tagging with scriptPubKey is we could tag on a per-output basis. However, scriptPubKey tagging is only possible with native-segwit, not P2SH. That means we have to disallow NOINPUT in P2SH-segwit (Otherwise, *all* P2SH addresses would become “risky” for payers) This should be ok for eltoo, since it has no reason to use P2SH-segwit in intermediate txs, which is more expensive.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Another problem with scriptPubKey tagging is all the existing bech32 implementations will not understand the special tag, and will pay to a tagged address as usual. An upgrade would be needed for them to refuse sending to tagged addresses by default.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; On the other hand, tagging with tx version will also protect P2SH-segwit, and all existing wallets are protected by default. However, it is somewhat a layer violation and you could only tag all or none output in the same tx. Also, as Bitcoin Core has just removed the tx version from the UTXO database, adding it back could be a little bit annoying, but doable.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; There is an extension to the version tagging, which could make NOINPUT even safer. In addition to tagging requirement, NOINPUT will also sign the version of the previous tx. If the wallet always uses a randomised tx version, it makes accidental replay very unlikely. However, that will burn a few more bits in the tx version field.&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt;&amp;gt; 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; 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;
    </content>
    <updated>2023-06-07T20:16:11&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxmw9gf8njn7eu8qzcnere9wf0em2nfusg7eq9sdvual35wr7x78qzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwdppdvm</id>
    
      <title type="html">📅 Original date posted:2018-12-18 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxmw9gf8njn7eu8qzcnere9wf0em2nfusg7eq9sdvual35wr7x78qzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwdppdvm" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsw023mpduhgrfugh9rp6pr6624ck3h7gaxztnz0nugrjv2sdq73ws2n4wek&#39;&gt;nevent1q…4wek&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-18&lt;br/&gt;📝 Original message:&amp;gt; On 18 Dec 2018, at 4:08 AM, Johnson Lau via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On 17 Dec 2018, at 11:48 PM, Ruben Somsen &amp;lt;rsomsen at gmail.com &amp;lt;mailto:rsomsen at gmail.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Hi Johnson,&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The design considerations here seem similar to the ML discussion of&lt;br/&gt;&amp;gt;&amp;gt; whether Graftroot should be optional [1].&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Yes, but the “tagging” emphasises more on the payer’s side: if the payer cannot guarantee that the payee would never reuse the key, the payer could avoid any NOINPUT-related trouble by tagging properly.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; As far as I can tell it should be compatible with Statechains [2],&lt;br/&gt;&amp;gt;&amp;gt; since it pretty much mirrors Eltoo in setup.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; My understanding is somewhat lacking, so perhaps I am missing the&lt;br/&gt;&amp;gt;&amp;gt; mark, but it is not completely clear to me how this affects&lt;br/&gt;&amp;gt;&amp;gt; fungibility if taproot gets added and the setup and trigger tx for&lt;br/&gt;&amp;gt;&amp;gt; Eltoo get combined into a single transaction. Would the NOINPUT&lt;br/&gt;&amp;gt;&amp;gt; spending condition be hidden inside the taproot commitment?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For the design considerations I mentioned above, the tags must be explicit and configurable by the payer. So it couldn’t be hidden in taproot.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If you don’t care about fungibility, you can always tag your setup output, and makes it ready for NOINPUT spending. Every update will need 2 signatures: a NOINPUT to spend the setup output or an earlier update output, and a NOINPUT to settle the latest update output.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If you care about fungibility, you can’t tag your setup output. Every update will need 3 signatures: a SINGLEINPUT (aka ANYONECANPAY) to spend the setup output, a NOINPUT to spend an earlier update output, and a NOINPUT to settle the latest update output.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (Actually, as soon as you made the first update tx with SINGLEINPUT, you don’t strictly need to make any SINGLEINPUT signatures in the later updates again, as the first update tx (or any update with a SINGLEINPUT signature) could be effectively the trigger tx. While it makes the settlement more expensive, it also means accidentally missing a SINGLEINPUT signature will not lead to any fund loss. So security-wise it’s same as the always-tagging scenario.)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The most interesting observation is: you never have the need to use NOINPUT on an already confirmed UTXO, since nothing about a confirmed UTXO is mutable. And every smart contract must anchor to a confirmed UTXO, or the whole contract is double-spendable. So the ability to NOINPUT-spend a setup output should not be strictly needed. In some (but not all) case it might make the protocol simpler, though.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So the philosophy behind output tagging is “avoid NOINPUT at all cost, until it is truly unavoidable&amp;#34;&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;After thinking more carefully, I believe output tagging could have no adverse effect on eltoo.&lt;br/&gt;&lt;br/&gt;Consider a system without tagging, where you could always spend an output with NOINPUT. Under taproot, state update could be made in 2 ways:&lt;br/&gt;&lt;br/&gt;a) Making 2 sigs for each update. One sig is a “script path” locktime NOINPUT spending of the setup output or an earlier update output. One sig is a “key path” relative-locktime NOINPUT spending of the new update output. In taproot terminology, “key path” means direct spending with the scriptPubKey, and “script path” means revealing the script hidden in taproot. Key path spending is always cheaper.&lt;br/&gt;&lt;br/&gt;b) Making 3 sigs for each update. One sig is a key path SINGLEINPUT (aka ANYONECANPAY) or NOINPUT spending of the setup output, without any locktime. One sig is a script path locktime NOINPUT spending of an earlier update output (if this is not the first update). One sig is a key path relative-locktime NOINPUT spending of the new update output&lt;br/&gt;&lt;br/&gt;Note that in b), the first signature could be either SINGLEINPUT or NOINPUT, and they just work as fine. So SINGLEINPUT should be used to avoid unnecessary replayability.&lt;br/&gt;&lt;br/&gt;In the case of uncooperative channel closing, b) is always cheaper than a), since this first broadcast signature will be a key path signature. Also, b) has better privacy if no one is cheating (only the last update is broadcast). The only information leaked in b) is the use of SINGLEINPUT and the subsequent relative-locktime NOINPUT. However, the script path signature in a) will leak the state number, which is the maximum number of updates made in this channel.&lt;br/&gt;&lt;br/&gt;In conclusion, b) is cheaper and more private, but it is more complex by requiring 3 sigs per update rather than 2. I think it is an acceptable tradeoff. (And as I mentioned in my last mail, missing some SINGLEINPUT sigs is not the end of the world. As long as you find one SINGLEINPUT sig in your backup, it safely falls back to the trigger tx model)&lt;br/&gt;&lt;br/&gt;What if we require output tagging? For privacy reason you shouldn’t tag your setup tx, so the setup output could not be spent with NOINPUT. Option a) doesn’t work, but b) only requires SINGLEINPUT and has no problem. So in a fee-minimising and privacy-maximising eltoo design, output tagging should have no adverse effect.&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/20181218/76d443f8/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20181218/76d443f8/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:15:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx47k3nupan2snz03e0pjg5nscwswsm7dml2qnujl70azhyet7v0czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw0av5zy</id>
    
      <title type="html">📅 Original date posted:2018-12-20 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx47k3nupan2snz03e0pjg5nscwswsm7dml2qnujl70azhyet7v0czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw0av5zy" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsztmq5adk7630z8ekgfghaq2evvp6240d0ue63rs95xf75nvw97tsgztu0f&#39;&gt;nevent1q…tu0f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-20&lt;br/&gt;📝 Original message:&amp;gt; On 20 Dec 2018, at 6:09 AM, Christian Decker &amp;lt;decker.christian at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Ruben Somsen via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; writes:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Hi Johnson,&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The design considerations here seem similar to the ML discussion of&lt;br/&gt;&amp;gt;&amp;gt; whether Graftroot should be optional [1].&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; As far as I can tell it should be compatible with Statechains [2],&lt;br/&gt;&amp;gt;&amp;gt; since it pretty much mirrors Eltoo in setup.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; My understanding is somewhat lacking, so perhaps I am missing the&lt;br/&gt;&amp;gt;&amp;gt; mark, but it is not completely clear to me how this affects&lt;br/&gt;&amp;gt;&amp;gt; fungibility if taproot gets added and the setup and trigger tx for&lt;br/&gt;&amp;gt;&amp;gt; Eltoo get combined into a single transaction. Would the NOINPUT&lt;br/&gt;&amp;gt;&amp;gt; spending condition be hidden inside the taproot commitment?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m not aware of a way to combine the setup and trigger transaction. The&lt;br/&gt;&amp;gt; trigger transaction was introduced in order to delay the start of the&lt;br/&gt;&amp;gt; timeouts until a later time, to avoid having an absolute lifetime limit&lt;br/&gt;&amp;gt; and having really huge timeout. If we were to combine the trigger&lt;br/&gt;&amp;gt; transaction with the setup transaction (which is broadcast during&lt;br/&gt;&amp;gt; channel creation), all of those timeouts would start counting down&lt;br/&gt;&amp;gt; immediately, and we could just skip the trigger transaction&lt;br/&gt;&amp;gt; altogether. It&amp;#39;d be more interesting to combine update and trigger&lt;br/&gt;&amp;gt; transactions in a sort of cut-through combination, but that doesn&amp;#39;t seem&lt;br/&gt;&amp;gt; possible outside of Mimblewimble.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Christian&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Correct me if I’m wrong.&lt;br/&gt;&lt;br/&gt;For the sake of simplicity, in the following I assume BIP118, 143, and 141-P2WSH are used (i.e. no taproot). Also, I skipped all the possible optimisations.&lt;br/&gt;&lt;br/&gt;1. A and B are going to setup a channel.&lt;br/&gt;&lt;br/&gt;2. They create one setup tx, with a setup output of the following script: &amp;lt;s&amp;gt; CLTV DROP 2 Au Bu 2 CHECKMULTISIG. Do not sign&lt;br/&gt;&lt;br/&gt;3. They create the update tx 0, spending the setup output with NOINPUT and locktime = s&#43;1, to the update-0 output with the script:&lt;br/&gt;IF 2 As0 Bs0 2 CHECKMULTISIG ELSE &amp;lt;s&#43;1&amp;gt; CLTV DROP 2 Au Bu 2 CHECKMULTISIG ENDIF&lt;br/&gt;&lt;br/&gt;4. They create the settlement tx 0, spending the update-0 output with As0 and Bs0 using BIP68 relative-locktime, with 2 settlement outputs&lt;br/&gt;&lt;br/&gt;5. They sign the setup tx and let it confirm&lt;br/&gt;&lt;br/&gt;6. To update, they create the update tx 1, spending the setup output with NOINPUT and locktime = s&#43;2, to the update-1 output with the script:&lt;br/&gt;IF 2 As1 Bs1 2 CHECKMULTISIG ELSE &amp;lt;s&#43;2&amp;gt; CLTV DROP 2 Au Bu 2 CHECKMULTISIG ENDIF&lt;br/&gt;and create the settlement tx 1, spending the update-1 output with As1 and Bs1 using relative-locktime, with 2 settlement outputs&lt;br/&gt;&lt;br/&gt;7. To close the channel, broadcast update tx 1. Wait for several confirmations. And broadcast settlement-tx-1&lt;br/&gt;&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/20181220/4c9d8779/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20181220/4c9d8779/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:15:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw023mpduhgrfugh9rp6pr6624ck3h7gaxztnz0nugrjv2sdq73wszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwt68uam</id>
    
      <title type="html">📅 Original date posted:2018-12-17 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw023mpduhgrfugh9rp6pr6624ck3h7gaxztnz0nugrjv2sdq73wszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwt68uam" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxujh0ugwe70tjrsgyvagsl7qey6hgeyqmj0rk83m5hq8dfyqpjsct8tpzd&#39;&gt;nevent1q…tpzd&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-17&lt;br/&gt;📝 Original message:&amp;gt; On 17 Dec 2018, at 11:48 PM, Ruben Somsen &amp;lt;rsomsen at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi Johnson,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The design considerations here seem similar to the ML discussion of&lt;br/&gt;&amp;gt; whether Graftroot should be optional [1].&lt;br/&gt;&lt;br/&gt;Yes, but the “tagging” emphasises more on the payer’s side: if the payer cannot guarantee that the payee would never reuse the key, the payer could avoid any NOINPUT-related trouble by tagging properly.&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As far as I can tell it should be compatible with Statechains [2],&lt;br/&gt;&amp;gt; since it pretty much mirrors Eltoo in setup.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; My understanding is somewhat lacking, so perhaps I am missing the&lt;br/&gt;&amp;gt; mark, but it is not completely clear to me how this affects&lt;br/&gt;&amp;gt; fungibility if taproot gets added and the setup and trigger tx for&lt;br/&gt;&amp;gt; Eltoo get combined into a single transaction. Would the NOINPUT&lt;br/&gt;&amp;gt; spending condition be hidden inside the taproot commitment?&lt;br/&gt;&lt;br/&gt;For the design considerations I mentioned above, the tags must be explicit and configurable by the payer. So it couldn’t be hidden in taproot.&lt;br/&gt;&lt;br/&gt;If you don’t care about fungibility, you can always tag your setup output, and makes it ready for NOINPUT spending. Every update will need 2 signatures: a NOINPUT to spend the setup output or an earlier update output, and a NOINPUT to settle the latest update output.&lt;br/&gt;&lt;br/&gt;If you care about fungibility, you can’t tag your setup output. Every update will need 3 signatures: a SINGLEINPUT (aka ANYONECANPAY) to spend the setup output, a NOINPUT to spend an earlier update output, and a NOINPUT to settle the latest update output.&lt;br/&gt;&lt;br/&gt;(Actually, as soon as you made the first update tx with SINGLEINPUT, you don’t strictly need to make any SINGLEINPUT signatures in the later updates again, as the first update tx (or any update with a SINGLEINPUT signature) could be effectively the trigger tx. While it makes the settlement more expensive, it also means accidentally missing a SINGLEINPUT signature will not lead to any fund loss. So security-wise it’s same as the always-tagging scenario.)&lt;br/&gt;&lt;br/&gt;The most interesting observation is: you never have the need to use NOINPUT on an already confirmed UTXO, since nothing about a confirmed UTXO is mutable. And every smart contract must anchor to a confirmed UTXO, or the whole contract is double-spendable. So the ability to NOINPUT-spend a setup output should not be strictly needed. In some (but not all) case it might make the protocol simpler, though.&lt;br/&gt;&lt;br/&gt;So the philosophy behind output tagging is “avoid NOINPUT at all cost, until it is truly unavoidable&amp;#34;&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; Ruben Somsen&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; [1] &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-May/016006.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-May/016006.html&lt;/a&gt;&lt;br/&gt;&amp;gt; [2]  &lt;a href=&#34;https://www.reddit.com/r/Bitcoin/comments/9nhjea/eli51525faq_for_statechains_offchain_transfer_of/&#34;&gt;https://www.reddit.com/r/Bitcoin/comments/9nhjea/eli51525faq_for_statechains_offchain_transfer_of/&lt;/a&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Mon, Dec 17, 2018 at 8:20 PM Johnson Lau via bitcoin-dev&lt;br/&gt;&amp;gt; &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; NOINPUT is very powerful, but the tradeoff is the risks of signature replay. While the key holders are expected not to reuse key pair, little could be done to stop payers to reuse an address. Unfortunately, key-pair reuse has been a social and technical norm since the creation of Bitcoin (the first tx made in block 170 reused the previous public key). I don’t see any hope to change this norm any time soon, if possible at all.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; As the people who are designing the layer-1 protocol, we could always blame the payer and/or payee for their stupidity, just like those people laughed at victims of Ethereum dumb contracts (DAO, Parity multisig, etc). The existing bitcoin script language is so restrictive. It disallows many useful smart contracts, but at the same time prevented many dumb contracts. After all, “smart” and “dumb” are non-technical judgement. The DAO contract has always been faithfully executed. It’s dumb only for those invested in the project. For me, it was just a comedy show.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; So NOINPUT brings us more smart contract capacity, and at the same time we are one step closer to dumb contracts. The target is to find a design that exactly enables the smart contracts we want, while minimising the risks of misuse.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The risk I am trying to mitigate is a payer mistakenly pay to a previous address with the exactly same amount, and the previous UTXO has been spent using NOINPUT. Accidental double payment is not uncommon. Even if the payee was honest and willing to refund, the money might have been spent with a replayed NOINPUT signature. Once people lost a significant amount of money this way, payers (mostly exchanges) may refuse to send money to anything other than P2PKH, native-P2WPKH and native-P2WSH (as the only 3 types without possibility of NOINPUT)&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; The proposed solution is that an output must be “tagged” for it to be spendable with NOINPUT, and the “tag” must be made explicitly by the payer. There are 2 possible ways to do the tagging:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; 1. A certain bit in the tx version must be set&lt;br/&gt;&amp;gt;&amp;gt; 2. A certain bit in the scriptPubKey must be set&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I will analyse the pros and cons later.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Using eltoo as example. The setup utxo is a simple 2-of-2 multisig, and should not be tagged. This makes it indistinguishable from normal 1-of-1 utxo. The trigger tx, which spends the setup utxo, should be tagged, so the update txs could spend the trigger utxo with NOINPUT. Similarly, all update txs should be tagged, so they could be spent by other update txs and settlement tx with NOINPUT. As the final destination, there is no need to tag in the settlement tx.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; In payer’s perspective, tagging means “I believe this address is for one-time-use only” Since we can’t control how other people manage their addresses, we should never do tagging when paying to other people.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I mentioned 2 ways of tagging, and they have pros and cons. First of all, tagging in either way should not complicate the eltoo protocol in anyway, nor bring extra block space overhead.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; A clear advantage of tagging with scriptPubKey is we could tag on a per-output basis. However, scriptPubKey tagging is only possible with native-segwit, not P2SH. That means we have to disallow NOINPUT in P2SH-segwit (Otherwise, *all* P2SH addresses would become “risky” for payers) This should be ok for eltoo, since it has no reason to use P2SH-segwit in intermediate txs, which is more expensive.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Another problem with scriptPubKey tagging is all the existing bech32 implementations will not understand the special tag, and will pay to a tagged address as usual. An upgrade would be needed for them to refuse sending to tagged addresses by default.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On the other hand, tagging with tx version will also protect P2SH-segwit, and all existing wallets are protected by default. However, it is somewhat a layer violation and you could only tag all or none output in the same tx. Also, as Bitcoin Core has just removed the tx version from the UTXO database, adding it back could be a little bit annoying, but doable.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; There is an extension to the version tagging, which could make NOINPUT even safer. In addition to tagging requirement, NOINPUT will also sign the version of the previous tx. If the wallet always uses a randomised tx version, it makes accidental replay very unlikely. However, that will burn a few more bits in the tx version field.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?&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;
    </content>
    <updated>2023-06-07T20:15:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfk0td4l4aanxx5emjemxpakc9sxmc7p46zdywle77s7r9c0lhl8czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw9sm0j5</id>
    
      <title type="html">📅 Original date posted:2018-12-13 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfk0td4l4aanxx5emjemxpakc9sxmc7p46zdywle77s7r9c0lhl8czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw9sm0j5" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0d6hmwf0fry7tnajhys6606salmsuz202u5a8f552vz7yuk0lnus3tph6m&#39;&gt;nevent1q…ph6m&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-13&lt;br/&gt;📝 Original message:NOINPUT is very powerful, but the tradeoff is the risks of signature replay. While the key holders are expected not to reuse key pair, little could be done to stop payers to reuse an address. Unfortunately, key-pair reuse has been a social and technical norm since the creation of Bitcoin (the first tx made in block 170 reused the previous public key). I don’t see any hope to change this norm any time soon, if possible at all.&lt;br/&gt;&lt;br/&gt;As the people who are designing the layer-1 protocol, we could always blame the payer and/or payee for their stupidity, just like those people laughed at victims of Ethereum dumb contracts (DAO, Parity multisig, etc). The existing bitcoin script language is so restrictive. It disallows many useful smart contracts, but at the same time prevented many dumb contracts. After all, “smart” and “dumb” are non-technical judgement. The DAO contract has always been faithfully executed. It’s dumb only for those invested in the project. For me, it was just a comedy show.&lt;br/&gt;&lt;br/&gt;So NOINPUT brings us more smart contract capacity, and at the same time we are one step closer to dumb contracts. The target is to find a design that exactly enables the smart contracts we want, while minimising the risks of misuse.&lt;br/&gt;&lt;br/&gt;The risk I am trying to mitigate is a payer mistakenly pay to a previous address with the exactly same amount, and the previous UTXO has been spent using NOINPUT. Accidental double payment is not uncommon. Even if the payee was honest and willing to refund, the money might have been spent with a replayed NOINPUT signature. Once people lost a significant amount of money this way, payers (mostly exchanges) may refuse to send money to anything other than P2PKH, native-P2WPKH and native-P2WSH (as the only 3 types without possibility of NOINPUT)&lt;br/&gt;&lt;br/&gt;The proposed solution is that an output must be “tagged” for it to be spendable with NOINPUT, and the “tag” must be made explicitly by the payer. There are 2 possible ways to do the tagging:&lt;br/&gt;&lt;br/&gt;1. A certain bit in the tx version must be set&lt;br/&gt;2. A certain bit in the scriptPubKey must be set&lt;br/&gt;&lt;br/&gt;I will analyse the pros and cons later.&lt;br/&gt;&lt;br/&gt;Using eltoo as example. The setup utxo is a simple 2-of-2 multisig, and should not be tagged. This makes it indistinguishable from normal 1-of-1 utxo. The trigger tx, which spends the setup utxo, should be tagged, so the update txs could spend the trigger utxo with NOINPUT. Similarly, all update txs should be tagged, so they could be spent by other update txs and settlement tx with NOINPUT. As the final destination, there is no need to tag in the settlement tx.&lt;br/&gt;&lt;br/&gt;In payer’s perspective, tagging means “I believe this address is for one-time-use only” Since we can’t control how other people manage their addresses, we should never do tagging when paying to other people.&lt;br/&gt;&lt;br/&gt;I mentioned 2 ways of tagging, and they have pros and cons. First of all, tagging in either way should not complicate the eltoo protocol in anyway, nor bring extra block space overhead.&lt;br/&gt;&lt;br/&gt;A clear advantage of tagging with scriptPubKey is we could tag on a per-output basis. However, scriptPubKey tagging is only possible with native-segwit, not P2SH. That means we have to disallow NOINPUT in P2SH-segwit (Otherwise, *all* P2SH addresses would become “risky” for payers) This should be ok for eltoo, since it has no reason to use P2SH-segwit in intermediate txs, which is more expensive.&lt;br/&gt;&lt;br/&gt;Another problem with scriptPubKey tagging is all the existing bech32 implementations will not understand the special tag, and will pay to a tagged address as usual. An upgrade would be needed for them to refuse sending to tagged addresses by default.&lt;br/&gt;&lt;br/&gt;On the other hand, tagging with tx version will also protect P2SH-segwit, and all existing wallets are protected by default. However, it is somewhat a layer violation and you could only tag all or none output in the same tx. Also, as Bitcoin Core has just removed the tx version from the UTXO database, adding it back could be a little bit annoying, but doable.&lt;br/&gt;&lt;br/&gt;There is an extension to the version tagging, which could make NOINPUT even safer. In addition to tagging requirement, NOINPUT will also sign the version of the previous tx. If the wallet always uses a randomised tx version, it makes accidental replay very unlikely. However, that will burn a few more bits in the tx version field.&lt;br/&gt;&lt;br/&gt;While this seems fully compatible with eltoo, is there any other proposals require NOINPUT, and is adversely affected by either way of tagging?
    </content>
    <updated>2023-06-07T20:15:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs98jt62ulkwru2ct02fg7wesg56afvww53lgcs7zaxnxm8lx5qqlszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwcj8ae3</id>
    
      <title type="html">📅 Original date posted:2018-12-12 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs98jt62ulkwru2ct02fg7wesg56afvww53lgcs7zaxnxm8lx5qqlszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwcj8ae3" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgv0va89l3hy6gk4sxm97ksv082tmhku2njrpg6h9ztv9t7e8ndpqzt93d8&#39;&gt;nevent1q…93d8&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-12&lt;br/&gt;📝 Original message:&amp;gt; On 12 Dec 2018, at 5:42 PM, Rusty Russell via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Pieter Wuille via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; Here is a combined proposal:&lt;br/&gt;&amp;gt;&amp;gt; * Three new sighash flags are added: SIGHASH_NOINPUT, SIGHASH_NOFEE,&lt;br/&gt;&amp;gt;&amp;gt; and SIGHASH_SCRIPTMASK.&lt;br/&gt;&amp;gt;&amp;gt; * A new opcode OP_MASK is added, which acts as a NOP during execution.&lt;br/&gt;&amp;gt;&amp;gt; * The sighash is computed like in BIP143, but:&lt;br/&gt;&amp;gt;&amp;gt;  * If SIGHASH_SCRIPTMASK is present, for every OP_MASK in scriptCode&lt;br/&gt;&amp;gt;&amp;gt; the subsequent opcode/push is removed.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m asking on-list because I&amp;#39;m sure I&amp;#39;m not the only confused one.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Having the SIGHASH_SCRIPTMASK flag is redundant AFAICT: why not always&lt;br/&gt;&amp;gt; perform mask-removal for signing?&lt;br/&gt;&lt;br/&gt;Because a hardware wallet may want to know what exact script it is signing?&lt;br/&gt;&lt;br/&gt;Masked script has reduced security, but this is a tradeoff with functionality (e.g. eltoo can’t work without masking part of the script). So when you don’t need that extra functionality, you go back to better security&lt;br/&gt;&lt;br/&gt;However, I’m not sure if there is any useful NOINPUT case with unmasked script.&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If you&amp;#39;re signing arbitrary scripts, you&amp;#39;re surely in trouble already?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And I am struggling to understand the role of scriptmask in a taproot&lt;br/&gt;&amp;gt; world, where the alternate script is both hidden and general?&lt;br/&gt;&lt;br/&gt;It makes sure that your signature is applicable to a specific script branch, not others (assuming you use the same pubkey in many branches, which is avoidable)&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I look forward to learning what I missed!&lt;br/&gt;&amp;gt; Rusty.&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;
    </content>
    <updated>2023-06-07T20:15:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqst8qad4vsx2yy2njrq0ahm923kj4fllel82lwct6pmvrrgsutaj2gzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwhyydf4</id>
    
      <title type="html">📅 Original date posted:2018-12-12 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqst8qad4vsx2yy2njrq0ahm923kj4fllel82lwct6pmvrrgsutaj2gzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwhyydf4" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszl4nmgq0tmusqvn0z33n9jk04uczdvsgxvpc39ffkuerzskv0u6qyc40fe&#39;&gt;nevent1q…40fe&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-12&lt;br/&gt;📝 Original message:&amp;gt; On 12 Dec 2018, at 6:50 AM, Russell O&amp;#39;Connor &amp;lt;roconnor at blockstream.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Sun, Dec 9, 2018 at 2:13 PM Johnson Lau &amp;lt;jl2012 at xbt.hk &amp;lt;mailto:jl2012 at xbt.hk&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; The current proposal is that a 64-byte signature will be used for the default “signing all” sighash, and 65-byte for other sighash types. The space saved will allow a few more txs in a block, so I think it worths doing. However, this also makes witness weight estimation more difficult in multisig cases.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This idea of signing witness weight has been brought up before. I think the concern is the difficulty to estimate the witness weight for complex scripts, which need this feature most. So it will work when it is not needed, and will not work when it is needed.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Is there any script example that witness size malleability is unavoidable?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I tend to think in opposite terms. Is there a proof that any script can be transformed into an equivalent one that avoids witness weight malleability?   But I admit there is a trade off:  If we don&amp;#39;t allow for signature covers weight, and we do need it, it will be too late to add.  On the other hand if we add signature covers weight, but it turns out that no Script ever needs to use it, then we&amp;#39;ve added that software complexity for no gain.  However, I think the software complexity is relatively low, making it worthwhile.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Moreover, even if witness weight malleability is entirely avoidable, it always seems to come at a cost.  Taking as an example libwally&amp;#39;s proposed &amp;#34; &amp;lt;&lt;a href=&#34;https://github.com/ElementsProject/libwally-core/blob/c6db6ccdfa54571afeeb582919240263424736a2/src/script.c#L718-L735&amp;gt;csv_2of3_then_2&amp;#34&#34;&gt;https://github.com/ElementsProject/libwally-core/blob/c6db6ccdfa54571afeeb582919240263424736a2/src/script.c#L718-L735&amp;gt;csv_2of3_then_2&amp;#34&lt;/a&gt;; Script &amp;lt;&lt;a href=&#34;https://github.com/ElementsProject/libwally-core/blob/c6db6ccdfa54571afeeb582919240263424736a2/src/script.c#L718-L735&amp;gt&#34;&gt;https://github.com/ElementsProject/libwally-core/blob/c6db6ccdfa54571afeeb582919240263424736a2/src/script.c#L718-L735&amp;gt&lt;/a&gt;;, it begins with &amp;#34;OP_DEPTH OP_1SUB OP_1SUB&amp;#34; spending 3 vbytes to avoid any possible witness malleability versus just taking a witness stack item to determine the branch, costing 1 or 2 (unmalleated) vbytes.  Now to be fair, under Taproot this particular script&amp;#39;s witness malleability problem probably goes away.  Nonetheless, I think it is fair to say that Bitcoin Script was designed without any regard given to scriptSig/witness malleability concerns and the result is that one is constantly fighting against malleability issues.  Short of a wholesale replacement of Bitcoin Script, I do think that having an option for signature covers weight is one of the best ways to address the whole problem.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regarding your point about 64/65-byte signatures; I speculate that in most protocols, all parties that are able to consider signing the weight, know what sighash flags the other parties are expected to be using.  However, your point is well-taken, and if we choose to adopt the option of signatures covering weight, we ought to make sure there exists a 65-byte signature that performs the equivalent of a sigHashAll (of course, still covering that particular sighash flag under the signature), to ensure that anti-weight-malleability can be use even when the sighash flags that other parties will use are unknown.  Even with the extra vbytes in the signatures, there may be a net weight savings by avoiding the need for anti-malleability Script code. (It might also be reasonable to have participants create signatures for a small range of different weight values? (Sorry in advance to PSBT)).&lt;br/&gt;&lt;br/&gt;I think the root cause of witness weight malleability is some opcodes accept variable size input (without affecting the output), and that input is provided by the puzzle solver. Going through the opcode list, I think such opcodes include IF, NOTIF, VERIFY, DROP, 2DROP, NIP, DEPTH, and all arithmetic opcode that accepts CScriptNum (including CHECKMULTISIG)&lt;br/&gt;&lt;br/&gt;VERIFY, DROP, 2DROP, NIP are not real problem, since they should not be the first opcode to interact with data directly provided by the puzzle solver.&lt;br/&gt;&lt;br/&gt;CHECKMULTISIG is fixed by BIP147. For the key number and sig number, they should be part of the script, so not malleable.&lt;br/&gt;&lt;br/&gt;DEPTH is a problem only if its inputs are not later examined by other opcodes. Again, this is pointless.&lt;br/&gt;&lt;br/&gt;The liberally example should be protected by the MINIMAL_IF policy, which requires the input of OP_IF be minimal. As you note, OP_IF could be replaced by taproot in many cases&lt;br/&gt;&lt;br/&gt;Non-minimal CScriptNum is also banned as BIP62 policy.&lt;br/&gt;&lt;br/&gt;For the purpose of preventing malicious third party witness bloating, all we need is the miners to enforce the policy. There is no reason for miners to accept size malleated txs, as that will reduce the usable block space. If they hate a tx, they would simply drop it, instead of wasting the block space.&lt;br/&gt;&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/20181213/a18091cd/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20181213/a18091cd/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:15:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfyt7quwadm49yt2slxucr53g6fardlyqyhg7tdz7vwrndy223e5szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwak64gs</id>
    
      <title type="html">📅 Original date posted:2018-12-09 📝 Original message:The ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfyt7quwadm49yt2slxucr53g6fardlyqyhg7tdz7vwrndy223e5szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwak64gs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdm09z272crnmcvtar4km0wjl4xupq7ls2try7pl9ruwz35xhswmqncctlh&#39;&gt;nevent1q…ctlh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-12-09&lt;br/&gt;📝 Original message:The current proposal is that a 64-byte signature will be used for the default “signing all” sighash, and 65-byte for other sighash types. The space saved will allow a few more txs in a block, so I think it worths doing. However, this also makes witness weight estimation more difficult in multisig cases.&lt;br/&gt;&lt;br/&gt;This idea of signing witness weight has been brought up before. I think the concern is the difficulty to estimate the witness weight for complex scripts, which need this feature most. So it will work when it is not needed, and will not work when it is needed.&lt;br/&gt;&lt;br/&gt;Is there any script example that witness size malleability is unavoidable?&lt;br/&gt;&lt;br/&gt;&amp;gt; On 7 Dec 2018, at 12:57 AM, Russell O&amp;#39;Connor via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; One more item to consider is &amp;#34;signature covers witness weight&amp;#34;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; While signing the witness weight doesn&amp;#39;t completely eliminate witness malleability (of the kind that can cause grief for compact blocks), it does eliminate the worst kind of witness malleability from the user&amp;#39;s perspective, the kind where malicious relay nodes increase the amount of witness data and therefore reduce the overall fee-rate of the transaction.  Generally users should strive to construct their Bitcoin Scripts in such a way that witness malleability isn&amp;#39;t possible, but as you are probably aware, this can be quite difficult to achieve as Scripts become more complex and maybe isn&amp;#39;t even possible for some complex Scripts.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Given the new fixed-sized signature of the Schnorr BIP, it becomes much easier to compute the final witness weight prior to signing.  In complex multi-party signing protocol, the final witness weight might not be known at signing time for everyone involved, so the &amp;#34;signature covers witness weight&amp;#34; ought to be optional.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T20:15:33&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdr92ctu2se0lw99y6v2r63t5kl6plsupxwjz3lysqfq2xy4zrz4gzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw76ymm7</id>
    
      <title type="html">📅 Original date posted:2018-11-23 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdr92ctu2se0lw99y6v2r63t5kl6plsupxwjz3lysqfq2xy4zrz4gzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw76ymm7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2hgxa5vl32phqvx4z2j3f2wjwsrg5t99tgsply004xq8zuyupnyqzhc95j&#39;&gt;nevent1q…c95j&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-23&lt;br/&gt;📝 Original message:&amp;gt;Even still, each call to OP_CODESEPARATOR / OP_CHECKSIG pair requires recomputing a new #5. scriptCode from BIP 143, and hence computes a new transaction digest.&lt;br/&gt;&lt;br/&gt;In the existing sighash (i.e. legacy and BIP143), there are 6 canonical SIGHASH types: 1, 2, 3, 0x81, 0x82, 0x83. In consensus, however, all 256 types are valid and distinct. An adversarial miner could use non-standard sighash types to nullify any attempt to cache sighash values (i.e. you have to compute a new tx digest for every OP_CHECKSIG, even without using OP_CODESEPARATOR).&lt;br/&gt;&lt;br/&gt;The only way to prevent this is reject OP_CODESEPARATOR, FindAndDelete(), and non-standard SIGHASH with a softfork. However, this doesn’t work in the next-generation SIGHASH, as tens of standard sighash types will exist. And, more importantly, sighash cache is no longer necessary in segwit, with the legacy O(n^2) hash bug being fixed.&lt;br/&gt;&lt;br/&gt;In summary, sighash cache is not necessary nor efficient in the next-generation SIGHASH, and is not a sufficient reason to remove OP_CODESEPARATOR, especially when people find OP_CODESEPARATOR useful in some way.&lt;br/&gt;&lt;br/&gt;But just to be clear, I think OP_CODESEPARATOR should be deprecated in legacy scripts. There is a general negative sentiment against OP_CODESEPARATOR but I think we need to evaluate case by case.&lt;br/&gt;&lt;br/&gt;&amp;gt; On 23 Nov 2018, at 6:10 AM, Russell O&amp;#39;Connor &amp;lt;roconnor at blockstream.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Nov 22, 2018 at 3:53 PM Johnson Lau &amp;lt;jl2012 at xbt.hk &amp;lt;mailto:jl2012 at xbt.hk&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; Assuming a script size of 128 bytes (including SHA256 padding), 2^20 scripts is 134MB. Double it to 268MB for the merkle branch hashes. With roughly 100MB/s, this should take 2.5s (or 42min for 30 levels). However, memory use is not considered.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt;each call to this operation effectively takes O(script-size) time&lt;br/&gt;&amp;gt; I’m not sure if this is correct. Actually, CTransactionSignatureSerializer() scans every script for OP_CODESEPARATOR. Scripts with and without OP_CODESEPARATOR should take exactly the same O(script-size) time (see &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/14786&#34;&gt;https://github.com/bitcoin/bitcoin/pull/14786&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/14786&amp;gt&#34;&gt;https://github.com/bitcoin/bitcoin/pull/14786&amp;gt&lt;/a&gt;;)&lt;br/&gt;&amp;gt; Also, this is no longer a concern under segwit (BIP143), which CTransactionSignatureSerializer() is not used. Actually, OP_CODESEPARATOR under segwit is way simpler than the proposed OP_MASK. If one finds OP_MASK acceptable, there should be no reason to reject OP_CODESEPARATOR.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Even still, each call to OP_CODESEPARATOR / OP_CHECKSIG pair requires recomputing a new #5. scriptCode from BIP 143, and hence computes a new transaction digest.  I understood that this issue was the main motivation for wanting to deprecate OP_CODESEPARATOR and remove it from later versions of script.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; However, given that we are looking at a combinatorial explosion in SIGHASH flag combinations already, coupled with existing SigOp limitations, maybe the cost of recomputing scriptCode with OP_CODESEPARATOR isn&amp;#39;t such a big deal.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; And even if we choose remove the behavior of OP_CODESEPARATOR in new versions of Script, it seems more than 30 layers of sequential OP_IFs can be MASTified, so there is no need to use OP_CODESEPARATOR within that limit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt;One suggestion I heard (I think I heard it from Pieter) to achieve the above is to add an internal counter that increments on every control flow operator,……...&lt;br/&gt;&amp;gt; If I have to choose among OP_CODESEPARATOR and “flow operator counting”, I’d rather choose OP_CODESEPARATOR. At least we don’t need to add more lines to the consensus code, just for something that is mostly archivable with MAST.&lt;br/&gt;&amp;gt; &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/20181123/0c20c6f7/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20181123/0c20c6f7/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:15:19&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsrzsq3c5jfs8n5leh7z9vycqe7yuq67fskc93886ywc8l74q7xl3qzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwpgu7m2</id>
    
      <title type="html">📅 Original date posted:2018-11-22 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsrzsq3c5jfs8n5leh7z9vycqe7yuq67fskc93886ywc8l74q7xl3qzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwpgu7m2" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsww3rj6qa7jz643wgk7xr98qnp8x4nfmvqzswzuh7yz5rc5sf4recz4v2a3&#39;&gt;nevent1q…v2a3&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-22&lt;br/&gt;📝 Original message:Assuming a script size of 128 bytes (including SHA256 padding), 2^20 scripts is 134MB. Double it to 268MB for the merkle branch hashes. With roughly 100MB/s, this should take 2.5s (or 42min for 30 levels). However, memory use is not considered.&lt;br/&gt;&lt;br/&gt;&amp;gt;each call to this operation effectively takes O(script-size) time&lt;br/&gt;I’m not sure if this is correct. Actually, CTransactionSignatureSerializer() scans every script for OP_CODESEPARATOR. Scripts with and without OP_CODESEPARATOR should take exactly the same O(script-size) time (see &lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/14786&#34;&gt;https://github.com/bitcoin/bitcoin/pull/14786&lt;/a&gt;)&lt;br/&gt;Also, this is no longer a concern under segwit (BIP143), which CTransactionSignatureSerializer() is not used. Actually, OP_CODESEPARATOR under segwit is way simpler than the proposed OP_MASK. If one finds OP_MASK acceptable, there should be no reason to reject OP_CODESEPARATOR.&lt;br/&gt;&lt;br/&gt;&amp;gt;One suggestion I heard (I think I heard it from Pieter) to achieve the above is to add an internal counter that increments on every control flow operator,……...&lt;br/&gt;If I have to choose among OP_CODESEPARATOR and “flow operator counting”, I’d rather choose OP_CODESEPARATOR. At least we don’t need to add more lines to the consensus code, just for something that is mostly archivable with MAST.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 23 Nov 2018, at 12:23 AM, Russell O&amp;#39;Connor &amp;lt;roconnor at blockstream.io&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I see, so your suggestion is that a sequence of OP_IF ... OP_ENDIF can be replaced by a Merklized Script tree of that depth in practice.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m concerned that at script creation time it takes exponential time to complete a Merkle root of depth &amp;#39;n&amp;#39;.  Can anyone provide benchmarks or estimates of how long it takes to compute a Merkle root of a full tree of various depths on typical consumer hardware?  I would guess things stop becoming practical at a depth of 20-30.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, Nov 22, 2018 at 9:28 AM Johnson Lau &amp;lt;jl2012 at xbt.hk&amp;gt; wrote:&lt;br/&gt;&amp;gt; With MAST in taproot, OP_IF etc become mostly redundant, with worse privacy. To maximise fungibility, we should encourage people to use MAST, instead of improve the functionality of OP_IF and further complicate the protocol.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On 22 Nov 2018, at 1:07 AM, Russell O&amp;#39;Connor via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On Mon, Nov 19, 2018 at 10:22 PM Pieter Wuille via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; So my question is whether anyone can see ways in which this introduces&lt;br/&gt;&amp;gt;&amp;gt; redundant flexibility, or misses obvious use cases?&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Hopefully my comment is on-topic for this thread:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Given that we want to move away from OP_CODESEPARATOR, because each call to this operation effectively takes O(script-size) time, we need a replacement for the functionality it currently provides.  While perhaps the original motivation for OP_CODESEPARTOR is surrounded in mystery, it currently can be used (or perhaps abused) for the task of creating signature that covers, not only which input is being signed, but which specific branch within that input Script code is being signed for.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; For example, one can place an OP_CODESEPARATOR within each branch of an IF block, or by placing an OP_CODESEPARATOR before each OP_CHECKSIG operation.  By doing so, signatures created for one clause cannot be used as signatures for another clause.  Since different clauses in Bitcoin Script may be enforcing different conditions (such as different time-locks, hash-locks, etc), it is useful to be able to sign in such a way that your signature is only valid when the conditions for a particular branch are satisfied.  In complex Scripts, it may not be practical or possible to use different public keys for every different clause. (In practice, you will be able to get away with fewer OP_CODESEPARATORS than one in every IF block).&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; One suggestion I heard (I think I heard it from Pieter) to achieve the above is to add an internal counter that increments on every control flow operator, OP_IF, OP_NOTIF, OP_ELSE, OP_ENDIF, and have the signature cover the value of this counter.  Equivalently we divide every Bitcoin Script program into blocks deliminated by these control flow operator and have the signature cover the index of the block that the OP_CHECKSIG occurs within.  More specifically, we will want a SigHash flag to enables/disable the signature covering this counter.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; There are many different ways one might go about replacing the remaining useful behaviour of OP_CODESEPARATOR than the one I gave above. I would be happy with any solution.&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;
    </content>
    <updated>2023-06-07T20:15:18&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz737z9nztl3e9gzlv7vpmzfclxlpvx69y8kmknxhy540rlgv5kvczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwfgkulu</id>
    
      <title type="html">📅 Original date posted:2018-11-24 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz737z9nztl3e9gzlv7vpmzfclxlpvx69y8kmknxhy540rlgv5kvczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwfgkulu" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstvvu2y6xwgvsrjefvu86xy5j9hrm5tw73yffe36zetk457mw0thspdxxau&#39;&gt;nevent1q…xxau&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-24&lt;br/&gt;📝 Original message:&amp;gt; On 23 Nov 2018, at 5:40 PM, Christian Decker via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anthony Towns &amp;lt;aj at erisian.com.au&amp;gt; writes:&lt;br/&gt;&amp;gt;&amp;gt; Commiting to just the sequence numbers seems really weird to me; it&lt;br/&gt;&amp;gt;&amp;gt; only really prevents you from adding inputs, since you could still&lt;br/&gt;&amp;gt;&amp;gt; replace any input that was meant to be there by almost any arbitrary&lt;br/&gt;&amp;gt;&amp;gt; other transaction...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It&amp;#39;s a really roundabout way of committing to the inputs, I&lt;br/&gt;&amp;gt; agree. I&amp;#39;m actually wondering if it makes sense to correct that&lt;br/&gt;&amp;gt; additional blanked field in BIP118 at all since it seems there is no&lt;br/&gt;&amp;gt; real use-case for NOINPUT that doesn&amp;#39;t involve blanking the&lt;br/&gt;&amp;gt; `hashSequence` as well.&lt;br/&gt;&lt;br/&gt;I think we just make it as simple as this: Always commit to sequence of the same input. Commit to hashSequence if and only if all inputs and all outputs are signed.&lt;br/&gt;&lt;br/&gt;The next-generation SIGHASH will introduce not only NOINPUT, but also signing of fees, previous scriptPubKey, and all input values, etc. So it won’t be a simple hack over BIP143. BIP118 might be better changed to be an informational BIP, focus on the rationale and examples of NOINPUT, and be cross-referenced with the consensus BIP.
    </content>
    <updated>2023-06-07T20:15:17&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsye3p7uz9h063sx5ujw8xeqnw8622adhanuu4wr3gzvarkrx8qf0gzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwyp0l3d</id>
    
      <title type="html">📅 Original date posted:2018-11-21 📝 Original message:If we ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsye3p7uz9h063sx5ujw8xeqnw8622adhanuu4wr3gzvarkrx8qf0gzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwyp0l3d" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs24e5y2gtwpdhsufyzpkfsr7u578s26e2gfuhhlu6pk7ypqnef22cznkj8f&#39;&gt;nevent1q…kj8f&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-11-21&lt;br/&gt;📝 Original message:If we sign the txids of all inputs, we should also explicitly commit to their values. Only this could fully eliminate any possible way to lie about input value to hardware wallets&lt;br/&gt;&lt;br/&gt;&amp;gt; Does it make sense to keep SIGHASH_NONE?&lt;br/&gt;SIGHASH_NONE should be kept. ANYONECANPAY|NONE allows donation of dust UTXOs to miners&lt;br/&gt;&lt;br/&gt;&amp;gt; I think NONE without NOFEE doesn&amp;#39;t make much sense…….&lt;br/&gt;We might refuse to sign weird combinations like NOFEE|ALLINPUT|ALLOUTPUT. But to keep the consensus logic simple, we should just validate it as usual.&lt;br/&gt;&lt;br/&gt;&amp;gt; OP_MASK seems a bit complicated to me. …...&lt;br/&gt;Yes, it looks complicated to me, and it improves security only in some avoidable edge cases in SIGHASH_NOINPUT:&lt;br/&gt;&lt;br/&gt;The common case: the exact masked script or address is reused. OP_MASK can’t prevent signature replay since the masked script is the same.&lt;br/&gt;&lt;br/&gt;The avoidable case: the same public key is reused in different script templates. OP_MASK may prevent signature replay is the masked script is not the same.&lt;br/&gt;&lt;br/&gt;The latter case is totally avoidable since one could and should use a different public key for different script.&lt;br/&gt;&lt;br/&gt;It could be made much simpler as NOINPUT with/without SCRIPT. This again is only helpful in the avoidable case above, but it doesn’t bring too much complexity.&lt;br/&gt;&lt;br/&gt;&amp;gt; I don&amp;#39;t have a reason why, but committing to the scriptCode feels to me like it reduces the &amp;#34;hackiness&amp;#34; of NOINPUT a lot.&lt;br/&gt;OP_MASK is designed to preserve the hackiness, while provide some sort of replay protection (only in avoidable cases). However, I’m not sure who would actually need NOINPUT with KNOWNSCRIPT&lt;br/&gt;&lt;br/&gt;&amp;gt; On 21 Nov 2018, at 4:29 AM, Anthony Towns via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Mon, Nov 19, 2018 at 02:37:57PM -0800, Pieter Wuille via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; Here is a combined proposal:&lt;br/&gt;&amp;gt;&amp;gt; * Three new sighash flags are added: SIGHASH_NOINPUT, SIGHASH_NOFEE,&lt;br/&gt;&amp;gt;&amp;gt; and SIGHASH_SCRIPTMASK.&lt;br/&gt;&amp;gt;&amp;gt; * A new opcode OP_MASK is added, which acts as a NOP during execution.&lt;br/&gt;&amp;gt;&amp;gt; * The sighash is computed like in BIP143, but:&lt;br/&gt;&amp;gt;&amp;gt;  * If SIGHASH_SCRIPTMASK is present, for every OP_MASK in scriptCode&lt;br/&gt;&amp;gt;&amp;gt; the subsequent opcode/push is removed.&lt;br/&gt;&amp;gt;&amp;gt;  * The scriptPubKey being spent is added to the sighash, unless&lt;br/&gt;&amp;gt;&amp;gt; SIGHASH_SCRIPTMASK is set.&lt;br/&gt;&amp;gt;&amp;gt;  * The transaction fee is added to the sighash, unless SIGHASH_NOFEE is set.&lt;br/&gt;&amp;gt;&amp;gt;  * hashPrevouts, hashSequence, and outpoint are set to null when&lt;br/&gt;&amp;gt;&amp;gt; SIGHASH_NOINPUT is set (like BIP118, but not for scriptCode).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Current flags are {ALL, NONE, SINGLE} and ANYONECANPAY, and the BIP143&lt;br/&gt;&amp;gt; tx digest consists of the hash of:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  1 nVersion&lt;br/&gt;&amp;gt;  4 outpoint&lt;br/&gt;&amp;gt;  5 input scriptCode&lt;br/&gt;&amp;gt;  6 input&amp;#39;s outpoint value&lt;br/&gt;&amp;gt;  7 input&amp;#39;s nSeq&lt;br/&gt;&amp;gt;  9 nLocktime&lt;br/&gt;&amp;gt; 10 sighash&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  2 hashPrevOuts (commits to 4,5,6; unless ANYONECANPAY)&lt;br/&gt;&amp;gt;  3 hashSequence (commits to 7; only if ALL and not ANYONECANPAY)&lt;br/&gt;&amp;gt;  8 hashOutputs&lt;br/&gt;&amp;gt;       - NONE: 0&lt;br/&gt;&amp;gt;       - SINGLE: {value,scriptPubKey} for corresponding output&lt;br/&gt;&amp;gt;       - otherwise: {value,scriptPubKey} for all outputs&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The fee is committed to by hashPrevOuts and hashOutputs, which means&lt;br/&gt;&amp;gt; NOFEE is only potentially useful if ANYONECANPAY or NONE or SINGLE is set.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; For NOINPUT, (2),(3),(4) are cleared, and SCRIPTMASK (which munges (5))&lt;br/&gt;&amp;gt; is only useful given NOINPUT, since (4) indirectly commits to (5). &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Given this implementation, NOINPUT effectively implies ANYONECANPAY,&lt;br/&gt;&amp;gt; I think. (I think that is also true of BIP 118&amp;#39;s NOINPUT spec)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Does it make sense to treat this as two classes of options, affecting&lt;br/&gt;&amp;gt; the input and output side:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  output: (pick one, using bits 0,1)&lt;br/&gt;&amp;gt;    * NONE -- don&amp;#39;t care where the money goes&lt;br/&gt;&amp;gt;    * SINGLE -- want this output&lt;br/&gt;&amp;gt;    * ALL -- want exactly this set of outputs&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  input: (pick one, using bits 4,5)&lt;br/&gt;&amp;gt;    * PARTIALSCRIPT -- spending from some tx with roughly this script (and&lt;br/&gt;&amp;gt;                       maybe others; SCRIPTMASK|NOINPUT|ANYONECANPAY)&lt;br/&gt;&amp;gt;    * KNOWNSCRIPT -- spending from some tx with exactly this script (and&lt;br/&gt;&amp;gt;                     maybe others; NOINPUT|ANYONECANPAY)&lt;br/&gt;&amp;gt;    * KNOWNTX -- spending from this tx (and maybe others; ANYONECANPAY)&lt;br/&gt;&amp;gt;    * ALL_INPUTS -- spending from exactly these txes&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  combo: (flag, bit 6)&lt;br/&gt;&amp;gt;    * NOFEE -- don&amp;#39;t commit to the fee&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think NONE without NOFEE doesn&amp;#39;t make much sense, and&lt;br/&gt;&amp;gt; NOFEE|ALL|ALL_INPUTS would also be pretty weird. Might make sense to&lt;br/&gt;&amp;gt; warn/error on signing when asking for those combinations, and maybe even&lt;br/&gt;&amp;gt; to fail on validating them.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (Does it make sense to keep SIGHASH_NONE? I guess SIGHASH_NONE|ALL_INPUTS&lt;br/&gt;&amp;gt; could be useful if you just use sigs on one of the other inputs to commit&lt;br/&gt;&amp;gt; to a useful output)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; FWIW, OP_MASK seems a bit complicated to me. How would you mask a script&lt;br/&gt;&amp;gt; that looks like:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   OP_MASK IF &amp;lt;p&amp;gt; ENDIF &amp;lt;q&amp;gt; ...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; or:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;   IF OP_MASK ENDIF &amp;lt;p&amp;gt; ...&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I guess if you make the rule be &amp;#34;for every OP_MASK in scriptCode the&lt;br/&gt;&amp;gt; *immediately* subsequent opcode/push is removed (if present)&amp;#34; it would&lt;br/&gt;&amp;gt; be fine though -- that would make OP_MASK in both the above not have&lt;br/&gt;&amp;gt; any effect. (Maybe a more explicit name like &amp;#34;MASK_PUSH_FOR_SIGHASH&amp;#34;&lt;br/&gt;&amp;gt; or something might be good?)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t have a reason why, but committing to the scriptCode feels to me&lt;br/&gt;&amp;gt; like it reduces the &amp;#34;hackiness&amp;#34; of NOINPUT a lot.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Cheers,&lt;br/&gt;&amp;gt; aj&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;
    </content>
    <updated>2023-06-07T20:15:16&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8qk63xjghy6vjrn3jg3wd2hssp7g964wkrez5gzdks9dvm085tgqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwp425ec</id>
    
      <title type="html">📅 Original date posted:2018-05-09 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8qk63xjghy6vjrn3jg3wd2hssp7g964wkrez5gzdks9dvm085tgqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwp425ec" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0ynk89pf2eg9d4sjksecd3ar4atwxvaulrkd3698p7mcg0lg3rrsx8745l&#39;&gt;nevent1q…745l&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-09&lt;br/&gt;📝 Original message:&amp;gt; On 10 May 2018, at 3:27 AM, Peter Todd &amp;lt;pete at petertodd.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Thu, May 10, 2018 at 01:56:46AM &#43;0800, Johnson Lau via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; You should make a “0 fee tx with exactly one OP_TRUE output” standard, but nothing else. This makes sure CPFP will always be needed, so the OP_TRUE output won’t pollute the UTXO set&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Instead, would you consider to use ANYONECANPAY to sign the tx, so it is possible add more inputs for fees? The total tx size is bigger than the OP_TRUE approach, but you don’t need to ask for any protocol change.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; In long-term, I think the right way is to have a more flexible SIGHASH system to allow people to add more inputs and outputs easily.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I don&amp;#39;t think that will work, as a zero-fee tx won&amp;#39;t get relayed even with&lt;br/&gt;&amp;gt; CPFP, due to the fact that we haven&amp;#39;t yet implemented package-based tx&lt;br/&gt;&amp;gt; relaying.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://petertodd.org&#34;&gt;https://petertodd.org&lt;/a&gt; &amp;#39;peter&amp;#39;[:-1]@petertodd.org&lt;br/&gt;&lt;br/&gt;My only concern is UTXO pollution. There could be a “CPFP anchor” softfork that outputs with empty scriptPubKey and 0 value are spendable only in the same block. If not spent immediately, they become invalid and are removed from UTXO. But I still think the best solution is a more flexible SIGHASH system, which doesn’t need CPFP at all.
    </content>
    <updated>2023-06-07T20:11:56&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8n4xakf4z9tgv6tc52fr2ure6dw0gjlgc9gtc4gc04unyuplv6fgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwpe0t2e</id>
    
      <title type="html">📅 Original date posted:2018-05-09 📝 Original message:You ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8n4xakf4z9tgv6tc52fr2ure6dw0gjlgc9gtc4gc04unyuplv6fgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwpe0t2e" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsg5e33ftjxmu0w69kpgng0gtmlww94ytgc3dmp7x3p9phaw2pv3lc028ut9&#39;&gt;nevent1q…8ut9&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-05-09&lt;br/&gt;📝 Original message:You should make a “0 fee tx with exactly one OP_TRUE output” standard, but nothing else. This makes sure CPFP will always be needed, so the OP_TRUE output won’t pollute the UTXO set&lt;br/&gt;&lt;br/&gt;Instead, would you consider to use ANYONECANPAY to sign the tx, so it is possible add more inputs for fees? The total tx size is bigger than the OP_TRUE approach, but you don’t need to ask for any protocol change.&lt;br/&gt;&lt;br/&gt;In long-term, I think the right way is to have a more flexible SIGHASH system to allow people to add more inputs and outputs easily.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 9 May 2018, at 7:57 AM, Rusty Russell via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;        The largest problem we are having today with the lightning&lt;br/&gt;&amp;gt; protocol is trying to predict future fees.  Eltoo solves this elegantly,&lt;br/&gt;&amp;gt; but meanwhile we would like to include a 546 satoshi OP_TRUE output in&lt;br/&gt;&amp;gt; commitment transactions so that we use minimal fees and then use CPFP&lt;br/&gt;&amp;gt; (which can&amp;#39;t be done at the moment due to CSV delays on outputs).&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Unfortunately, we&amp;#39;d have to P2SH it at the moment as a raw &amp;#39;OP_TRUE&amp;#39; is&lt;br/&gt;&amp;gt; non-standard.  Are there any reasons not to suggest such a policy&lt;br/&gt;&amp;gt; change?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks!&lt;br/&gt;&amp;gt; Rusty.&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;
    </content>
    <updated>2023-06-07T20:11:55&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsz2h7trq4k4t3jd0n8rfzted639vn0nfp7dx2nttvjzlsqsrysflszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwd6exj6</id>
    
      <title type="html">📅 Original date posted:2018-02-16 📝 Original message:Short ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsz2h7trq4k4t3jd0n8rfzted639vn0nfp7dx2nttvjzlsqsrysflszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwd6exj6" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswgjwztyarc9jd9tesmj92d8kwxzzcskha3z8asjldkyrgx80gf9ga8t3wa&#39;&gt;nevent1q…t3wa&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2018-02-16&lt;br/&gt;📝 Original message:Short history&lt;br/&gt;----------------&lt;br/&gt;&lt;br/&gt;Satoshi introduced sigops counting as a softfork to limit the number of signature operation in a block. He statically counted all OP_CHECK(MULTI)SIG(VERIFY) in both scriptSig and scriptPubKey, assumed a OP_CHECKMULTISIG is equivalent to 20 OP_CHECKSIG, and enforced a block limit of 20000 sigop. The counting is not contextual, i.e. one doesn’t need the UTXO set to determine the number of sigop. The counting was also static so one doesn’t need to execute a script in order to count sigop. However, this is completely wrong for few reasons: a) opcodes in scriptPubKey are not executed; b) scriptPubKey of spent UTXO, which are actually executed, are not counted at all; c) it greatly overestimate the cost of multi-sig; d) it counts sigop in unexecuted branch.&lt;br/&gt;&lt;br/&gt;As P2SH was introduced, sigop counting also covered the sigop redeemScript. This is good because redeemScript is what being executed. It also improved the counting of OP_CHECKMULTISIG. If it is in certain canonical form, it would count the number of public keys instead of assuming it as 20. On the other hand, counting sigop becomes not possible without the UTXO set, since one needs UTXO to identify P2SH inputs. Also, the canonical OP_CHECKMULTISIG counting is not quite elegant and created more special cases in the code.&lt;br/&gt;&lt;br/&gt;Segwit (BIP141) scaled the legacy sigop limit by 4x. So every legacy sigop becomes 4 new sigop, with a block limit of 80000 new sigop. P2WPKH is counted as 1 new sigop, and P2WSH is counted in the same way as P2SH.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Problem&lt;br/&gt;------------&lt;br/&gt;&lt;br/&gt;We now have multiple 2nd generation script proposals, such as BIP114, BIP117, taproot, etc. BIP114 and taproot allows static sigop counting, but not BIP117 as it requires execution to determine what would be run as script (like OP_EVAL). As we want to allow more complicated script functions, static sigop counting might not be easy. However, we still want to have a limit to avoid unexpected DoS attack.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Proposal&lt;br/&gt;------------&lt;br/&gt;&lt;br/&gt;Since we have a block weight limit of 4,000,000 and sigop limit of 80,000, each sigop could not use more than 50 weight unit on average. For new script proposals we could count the actual number of sigop at execution (i.e. skip unexecuted sigop, skip 0-size signature, count the actual checksig operations in multi-sig), and make sure the number of executed sigop * 50 is not greater than the size of the input.&lt;br/&gt;&lt;br/&gt;The minimal size of each input is 32 (prevout.hash) &#43; 4 (prevout.n) &#43; 4 (nSequence) &#43; 1 (empty scriptSig) = 41 bytes or 164 weight unit. So the new rule would require that (164 &#43; input witness size) &amp;gt;= (actual_sigop * 50). This is a per-input limit, as script validation is parallel.&lt;br/&gt;&lt;br/&gt;Since a compressed key is 33 bytes and a normal compact signature is 64 bytes, the 1:50 ratio should be more than enough to allow any normal use of CHECKSIG, unless people are doing weird things like 2DUP 2DUP 2DUP……..CHECKSIG CHECKSIG CHECKSIG CHECKSIG , which would have many sigop with a relatively small witness. Interactive per-tx signature aggregation allows 64bytes/tx signature, and per-block non-interatcitve signature aggregation allows 32bytes/signature (&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014272.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014272.html&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014272.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-May/014272.html&amp;gt&lt;/a&gt;;). In such cases, the 1:50 ratio might not be enough if many signatures are aggregated. Depends on the number of sigop we could tolerate, the 1:50 ratio might be reduced to 1:32 or lower to make sure legitimate use would never hit the limit. I think 32 is reasonable as it is about the size of a public key, which would guarantee each pubkey must get a sigop slot.&lt;br/&gt;&lt;br/&gt;So a relay node could be certain that a tx won’t spend excessive CPU power by just looking at its size. If it spends too much, it is invalid and script execution could be terminated early.&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/20180216/296ee3ec/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180216/296ee3ec/attachment.html&amp;gt&lt;/a&gt;;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;A non-text attachment was scrubbed...&lt;br/&gt;Name: signature.asc&lt;br/&gt;Type: application/pgp-signature&lt;br/&gt;Size: 659 bytes&lt;br/&gt;Desc: Message signed with OpenPGP&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180216/296ee3ec/attachment.sig&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20180216/296ee3ec/attachment.sig&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:10:53&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsx4etq5yzw44w3pgw9qusvtnxv88t3peexge5sltdngjvqtgmjtjczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwjmctld</id>
    
      <title type="html">📅 Original date posted:2017-11-20 📝 Original message:We ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsx4etq5yzw44w3pgw9qusvtnxv88t3peexge5sltdngjvqtgmjtjczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwjmctld" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqszxrt7myaatxkv2qtrm23ruvjm9a4nqrvmzgr5xz67mdfwlhz3l5swlsqzw&#39;&gt;nevent1q…sqzw&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-11-20&lt;br/&gt;📝 Original message:We can’t “just compute the Transaction ID the same way the hash for signing the transaction is computed” because with different SIGHASH flags, there are 6 (actually 256) ways to hash a transaction.&lt;br/&gt;&lt;br/&gt;Also, changing the definition of TxID is a hardfork change, i.e. everyone are required to upgrade or a chain split will happen.&lt;br/&gt;&lt;br/&gt;It is possible to use “normalised TxID” (BIP140) to fix malleability issue. As a softfork, BIP140 doesn’t change the definition of TxID. Instead, the normalised txid (i.e. txid with scriptSig removed) is used when making signature. Comparing with segwit (BIP141), BIP140 does not have the side-effect of block size increase, and doesn’t provide any incentive to control the size of UTXO set. Also, BIP140 makes the UTXO set permanently bigger, as the database needs to store both txid and normalised txid&lt;br/&gt;&lt;br/&gt;&amp;gt; On 21 Nov 2017, at 1:24 AM, Praveen Baratam via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Bitcoin Noob here. Please forgive my ignorance.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; From what I understand, in SegWit, the transaction needs to be serialized into a data structure that is different from the current one where signatures are separated from the rest of the transaction data.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Why change the format at all? Why cant we just compute the Transaction ID the same way the hash for signing the transaction is computed?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Dr. Praveen Baratam&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; about.me &amp;lt;&lt;a href=&#34;http://about.me/praveen.baratam&amp;gt;_______________________________________________&#34;&gt;http://about.me/praveen.baratam&amp;gt;_______________________________________________&lt;/a&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;&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/20171121/f53f93f9/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20171121/f53f93f9/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:07:50&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstepgpu6jf5yjx558fl2xdq0l3kam9gjj2zqvtcaps439an4syt5szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw7jm0pp</id>
    
      <title type="html">📅 Original date posted:2017-09-20 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstepgpu6jf5yjx558fl2xdq0l3kam9gjj2zqvtcaps439an4syt5szypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw7jm0pp" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsxpr6v44my36hxayfhqarxluhwtkyaueqtpm75pjkfxjla4a2uhesxsn4tu&#39;&gt;nevent1q…n4tu&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-09-20&lt;br/&gt;📝 Original message:&amp;gt; On 19 Sep 2017, at 11:09 AM, Luke Dashjr via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tuesday 19 September 2017 12:46:30 AM Mark Friedenbach via bitcoin-dev &lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; After the main discussion session it was observed that tail-call semantics&lt;br/&gt;&amp;gt;&amp;gt; could still be maintained if the alt stack is used for transferring&lt;br/&gt;&amp;gt;&amp;gt; arguments to the policy script.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Isn&amp;#39;t this a bug in the cleanstack rule?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; (Unrelated...)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Another thing that came up during the discussion was the idea of replacing all &lt;br/&gt;&amp;gt; the NOPs and otherwise-unallocated opcodes with a new OP_RETURNTRUE &lt;br/&gt;&amp;gt; implementation, in future versions of Script. This would immediately exit the &lt;br/&gt;&amp;gt; program (perhaps performing some semantic checks on the remainder of the &lt;br/&gt;&amp;gt; Script) with a successful outcome.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; This is similar to CVE-2010-5141 in a sense, but since signatures are no &lt;br/&gt;&amp;gt; longer Scripts themselves, it shouldn&amp;#39;t be exploitable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The benefit of this is that it allows softforking in ANY new opcode, not only &lt;br/&gt;&amp;gt; the -VERIFY opcode variants we&amp;#39;ve been doing. That is, instead of merely &lt;br/&gt;&amp;gt; terminating the Script with a failure, the new opcode can also remove or push &lt;br/&gt;&amp;gt; stack items. This is because old nodes, upon encountering the undefined &lt;br/&gt;&amp;gt; opcode, will always succeed immediately, allowing the new opcode to do &lt;br/&gt;&amp;gt; literally anything from that point onward.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Luke&lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I have implemented OP_RETURNTRUE in an earlier version of MAST (BIP114) but have given up the idea, for 2 reasons:&lt;br/&gt;&lt;br/&gt;1. I’ve updated BIP114 to allow inclusion of scripts in witness, and require them to be signed. In this way users could add additional conditions for the validity of a signature. For example, with OP_CHECKBLOCKHASH, it is possible to make the transaction valid only in the specified chain. (More discussion in &lt;a href=&#34;https://github.com/jl2012/bips/blob/vault/bip-0114.mediawiki#Additional_scripts_in_witness&#34;&gt;https://github.com/jl2012/bips/blob/vault/bip-0114.mediawiki#Additional_scripts_in_witness&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/jl2012/bips/blob/vault/bip-0114.mediawiki#Additional_scripts_in_witness&amp;gt&#34;&gt;https://github.com/jl2012/bips/blob/vault/bip-0114.mediawiki#Additional_scripts_in_witness&amp;gt&lt;/a&gt;; )&lt;br/&gt;&lt;br/&gt;2. OP_RETURNTRUE does not work well with signature aggregation. Signature aggregation will collect (pubkey, message) pairs in a tx, combine them, and verify with one signature. However, consider the following case:&lt;br/&gt;&lt;br/&gt;OP_RETURNTRUE OP_IF &amp;lt;pubkey&amp;gt; OP_CHECKSIGVERIFY OP_ENDIF OP_TRUE&lt;br/&gt;&lt;br/&gt;For old nodes, the script terminates at OP_RETURNTRUE, and it will not collect the (pubkey, message) pair.&lt;br/&gt;&lt;br/&gt;If we use a softfork to transform OP_RETURNTRUE into OP_17 (pushing the number 17 to the stack), new nodes will collect the (pubkey, message) pair and try to aggregate with other pairs. This becomes a hardfork.&lt;br/&gt;&lt;br/&gt;--------&lt;br/&gt;Technically, we could create ANY op code with an OP_NOP. For example, if we want OP_MUL, we could have OP_MULVERIFY, which verifies if the 3rd stack item is the product of the top 2 stack items. Therefore, OP_MULVERIFY OP_2DROP is functionally same as OP_MUL, which removes the top 2 items and returns the product. The problem is it takes more witness space.&lt;br/&gt;&lt;br/&gt;If we don’t want this ugliness, we could use a new script version for every new op code we add. In the new BIP114 (see link above), I suggest to move the script version to the witness, which is cheaper.&lt;br/&gt;&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/20170920/c37d065c/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170920/c37d065c/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:05:40&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfnyx4mz4qlms2eats0nr3a4lqsfkf309jd6txe23ymw9hd2s2xeszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw6qtjg0</id>
    
      <title type="html">📅 Original date posted:2017-05-09 📝 Original message:No, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfnyx4mz4qlms2eats0nr3a4lqsfkf309jd6txe23ymw9hd2s2xeszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw6qtjg0" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsywdqpxcg7yv3stxwgs9axfqlt85rqp744g90g4vxtq60r3m090jqgj4ff4&#39;&gt;nevent1q…4ff4&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-05-09&lt;br/&gt;📝 Original message:No, changing from 50% to 75% is a hardfork. (75 -&amp;gt; 50 is a softfork). Unless you make it pre-scheduled, or leave a special “backdoor” softfork to change the discount.&lt;br/&gt;&lt;br/&gt;And that would certainly reduce the max tx/s with 50% discount, also reduce the incentive to spend witness UTXO. &lt;br/&gt;&lt;br/&gt;&amp;gt; On 10 May 2017, at 00:19, Sergio Demian Lerner &amp;lt;sergio.d.lerner at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks Johnson and Hampus for the clarifications. &lt;br/&gt;&amp;gt; However, I would rather do the opposite: soft-fork to 50% now, and soft-fork again to 75% discount later if needed, because it doesn&amp;#39;t affect the max transactions/second. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Segwit as it is today should be activated. However if it is not before November, then for the next Segwit attempt I would choose a more conservative 50% discount.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tue, May 9, 2017 at 12:45 PM, Johnson Lau &amp;lt;jl2012 at xbt.hk &amp;lt;mailto:jl2012 at xbt.hk&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt; On 9 May 2017, at 21:49, Sergio Demian Lerner via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &amp;gt; So it seems the 75% discount has been chosen with the idea that in the future the current transaction pattern will shift towards multisigs. This is not a bad idea, as it&amp;#39;s the only direction Bitcoin can scale without a HF.&lt;br/&gt;&amp;gt; &amp;gt; But it&amp;#39;s a bad idea if we end up doing, for example, a 2X blocksize increase HF in the future. In that case it&amp;#39;s much better to use a 50% witness discount, and do not make scaling risky by making the worse case block size 8 Mbytes, when it could have been 2*2.7=5.4 Mbytes.&lt;br/&gt;&amp;gt; &amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As we could change any parameter in a hardfork, I don’t think this has any relation with the current BIP141 proposal. We could just use 75% in a softfork, and change that to a different value (or completely redefine the definition of weight) with a hardfork later.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&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/20170510/7cb9f0fc/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170510/7cb9f0fc/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T20:00:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs95r3s8hc5ajemtmyev2n0hget0fw6wx9t2hueg39n00edrjhd5lqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw37ahmk</id>
    
      <title type="html">📅 Original date posted:2017-05-09 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs95r3s8hc5ajemtmyev2n0hget0fw6wx9t2hueg39n00edrjhd5lqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw37ahmk" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswtrtvqkrrzmxn0wmp75m47pakc2wg6dw7na6hjc5wg99y67pfess35kqg6&#39;&gt;nevent1q…kqg6&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-05-09&lt;br/&gt;📝 Original message:&amp;gt; On 9 May 2017, at 21:49, Sergio Demian Lerner via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So it seems the 75% discount has been chosen with the idea that in the future the current transaction pattern will shift towards multisigs. This is not a bad idea, as it&amp;#39;s the only direction Bitcoin can scale without a HF. &lt;br/&gt;&amp;gt; But it&amp;#39;s a bad idea if we end up doing, for example, a 2X blocksize increase HF in the future. In that case it&amp;#39;s much better to use a 50% witness discount, and do not make scaling risky by making the worse case block size 8 Mbytes, when it could have been 2*2.7=5.4 Mbytes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;As we could change any parameter in a hardfork, I don’t think this has any relation with the current BIP141 proposal. We could just use 75% in a softfork, and change that to a different value (or completely redefine the definition of weight) with a hardfork later.
    </content>
    <updated>2023-06-07T20:00:57&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswq849vjrq3gmpm0m3rad00p03pcz34vvhwxafkzvntlhc7542r0czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwkaegm7</id>
    
      <title type="html">📅 Original date posted:2017-04-08 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswq849vjrq3gmpm0m3rad00p03pcz34vvhwxafkzvntlhc7542r0czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwkaegm7" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0g6ty5avee90kpfeekfh7ef7d4hjhu3mt6dl0823tcfls9xa3g9qcufhrl&#39;&gt;nevent1q…fhrl&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-08&lt;br/&gt;📝 Original message:&amp;gt; On 9 Apr 2017, at 03:56, Tomas &amp;lt;tomas at tomasvdw.nl&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I don’t fully understand your storage engine. So the following deduction&lt;br/&gt;&amp;gt;&amp;gt; is just based on common sense.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; a) It is possible to make unlimited number of 1-in-100-out txs&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; b) The maximum number of 100-in-1-out txs is limited by the number of&lt;br/&gt;&amp;gt;&amp;gt; previous 1-in-100-out txs&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; c) Since bitcrust performs not good with 100-in-1-out txs, for anti-DoS&lt;br/&gt;&amp;gt;&amp;gt; purpose you should limit the number of previous 1-in-100-out txs. &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; d) Limit 1-in-100-out txs == Limit UTXO growth&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; I’m not surprised that you find an model more efficient than Core. But I&lt;br/&gt;&amp;gt;&amp;gt; don’t believe one could find a model that doesn’t become more efficient&lt;br/&gt;&amp;gt;&amp;gt; with UTXO growth limitation.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; My efficiency claims are *only* with regards to order validation. If we&lt;br/&gt;&amp;gt; assume all transactions are already pre-synced and verified, bitcrust&amp;#39;s&lt;br/&gt;&amp;gt; order validation is very fast, and (only slightly) negatively effected&lt;br/&gt;&amp;gt; by input-counts.&lt;br/&gt;&lt;br/&gt;pre-synced means already in mempool and verified? Then it sounds like we just need some mempool optimisation? The tx order in a block is not important, unless they are dependent&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; One more question: what is the absolute minimum disk and memory usage in&lt;br/&gt;&amp;gt;&amp;gt; bitcrust, compared with the pruning mode in Core?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; As bitcrust doesn&amp;#39;t support this yet, I cannot give accurate numbers,&lt;br/&gt;&amp;gt; but I&amp;#39;ve provided some numbers estimates earlier in the thread.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Rereading my post and these comments, I may have stepped on some toes&lt;br/&gt;&amp;gt; with regards to SegWit&amp;#39;s model. I like SegWit (though I may have a&lt;br/&gt;&amp;gt; slight preference for BIP140), and I understand the reasons for the&lt;br/&gt;&amp;gt; &amp;#34;discount&amp;#34;, so this was not my intention. I just think that the reversal&lt;br/&gt;&amp;gt; of costs during peak load order validation is a rather interesting&lt;br/&gt;&amp;gt; feature of using spend-tree  based validation. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Tomas&lt;br/&gt;&lt;br/&gt;Please no conspiracy theory like stepping on someone’s toes. I believe it’s always nice to challenge the established model. However, as I’m trying to make some hardfork design, I intend to have a stricter UTXO growth limit. As you said &amp;#34;protocol addressing the UTXO growth, might not be worth considering protocol improvements*, it sounds like UTXO growth limit wouldn’t be very helpful for your model, which I doubt.
    </content>
    <updated>2023-06-07T19:59:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs8mdpg8u80c6ux33dxq3rq4cwj8ejdjs7470hkcwc2gkhstgjjwjgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwfssu5p</id>
    
      <title type="html">📅 Original date posted:2017-04-08 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs8mdpg8u80c6ux33dxq3rq4cwj8ejdjs7470hkcwc2gkhstgjjwjgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwfssu5p" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsflptzpmmppyapamf9e7v5fs2nll383e83ryv9n5l5mmfgvwxn8rsjkxtrr&#39;&gt;nevent1q…xtrr&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-04-08&lt;br/&gt;📝 Original message:&amp;gt; On 8 Apr 2017, at 15:28, Tomas via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I think you are being a bit harsh here . I am also clearly explaining&lt;br/&gt;&amp;gt; the difference only applies to peak load, and just making a suggestion.&lt;br/&gt;&amp;gt; I simply want to stress the importance of protocol / implementation&lt;br/&gt;&amp;gt; separation as even though you are correct UTXO data is always a resource&lt;br/&gt;&amp;gt; cost for script validation (as I also state), the ratio of different&lt;br/&gt;&amp;gt; costs are  not necessarily *identical* across implementation. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Note that the converse also holds: In bitcrust, if the last few blocks&lt;br/&gt;&amp;gt; contain many inputs, the peak load verification for this block is&lt;br/&gt;&amp;gt; slower. This is not the case in Core.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Tomas&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;I don’t fully understand your storage engine. So the following deduction is just based on common sense.&lt;br/&gt;&lt;br/&gt;a) It is possible to make unlimited number of 1-in-100-out txs&lt;br/&gt;&lt;br/&gt;b) The maximum number of 100-in-1-out txs is limited by the number of previous 1-in-100-out txs&lt;br/&gt;&lt;br/&gt;c) Since bitcrust performs not good with 100-in-1-out txs, for anti-DoS purpose you should limit the number of previous 1-in-100-out txs. &lt;br/&gt;&lt;br/&gt;d) Limit 1-in-100-out txs == Limit UTXO growth&lt;br/&gt;&lt;br/&gt;I’m not surprised that you find an model more efficient than Core. But I don’t believe one could find a model that doesn’t become more efficient with UTXO growth limitation.&lt;br/&gt;&lt;br/&gt;Maybe you could try an experiment with regtest? Make a lot 1-in-100-out txs with many blocks, then spend all the UTXOs with 100-in-1-out txs. Compare the performance of bitcrust with core. Then repeat with 1-in-1-out chained txs (so the UTXO set is always almost empty)&lt;br/&gt;&lt;br/&gt;One more question: what is the absolute minimum disk and memory usage in bitcrust, compared with the pruning mode in Core?
    </content>
    <updated>2023-06-07T19:59:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsgea6v2n94pld0uv4dzax2aje7sc9neqtzj9g5zejwtnkmpqxtzgqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwx0lkav</id>
    
      <title type="html">📅 Original date posted:2017-03-29 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsgea6v2n94pld0uv4dzax2aje7sc9neqtzj9g5zejwtnkmpqxtzgqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwx0lkav" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs2n6evjsslcxczrkxzghupelc35yyt6a8s3vkauhh2f2my6599lugn9knf0&#39;&gt;nevent1q…knf0&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-03-29&lt;br/&gt;📝 Original message:&amp;gt; On 29 Mar 2017, at 14:24, Emin Gün Sirer via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &amp;gt;Even when several of the experts involved in the document you refer has my respect and admiration, I do not agree with some of their conclusions&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m one of the co-authors of that study. I&amp;#39;d be the first to agree with your conclusion&lt;br/&gt;&amp;gt; and argue that the 4MB size suggested in that paper should not be used without&lt;br/&gt;&amp;gt; compensation for two important changes to the network.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Our recent measurements of the Bitcoin P2P network show that network speeds&lt;br/&gt;&amp;gt; have improved tremendously. From February 2016 to February 2017, the average&lt;br/&gt;&amp;gt; provisioned bandwidth of a reachable Bitcoin node went up by approximately 70%. &lt;br/&gt;&amp;gt; And that&amp;#39;s just in the last year.&lt;br/&gt;&lt;br/&gt;4 * 144 * 30 = 17.3GB per month, or 207GB per year. Full node initialisation will become prohibitive for most users until a shortcut is made (e.g. witness pruning and UTXO commitment but these are not trust-free)&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Further, the emergence of high-speed block relay networks, like Falcon (&lt;a href=&#34;http://www.falcon-net.org&#34;&gt;http://www.falcon-net.org&lt;/a&gt; &amp;lt;&lt;a href=&#34;http://www.falcon-net.org/&amp;gt&#34;&gt;http://www.falcon-net.org/&amp;gt&lt;/a&gt;;)&lt;br/&gt;&amp;gt; and FIBRE, as well as block compression, e.g. BIP152 and xthin, change the picture dramatically. &lt;br/&gt;&lt;br/&gt;Also as the co-author of the selfish mining paper, you should know all these technology assume big miners being benevolent.&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; So, the 4MB limit mentioned in our paper should not be used as a protocol limit today. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Best,&lt;br/&gt;&amp;gt; - egs&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tue, Mar 28, 2017 at 3:36 PM, Juan Garavaglia via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; Alphonse,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Even when several of the experts involved in the document you refer has my respect and admiration, I do not agree with some of their conclusions some of their estimations are not accurate other changed like Bootstrap Time, Cost per Confirmed Transaction they consider a network of 450,000,00 GH and today is 3.594.236.966 GH, the energy consumption per GH is old, the cost of electricity is wrong even when the document was made and is hard to find any parameter used that is valid for an analysis today.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Again with all respect to the experts involved in that analysis is not valid today.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I tend to believe more in Moore’s law, Butters&amp;#39; Law of Photonics and Kryder’s Law all has been verified for many years and support that 32 MB in 2020 are possible and equals or less than 1 MB in 2010.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Again may be is not possible Johnson Lau and LukeJr invested a significant amount of time investigating ways to do a safe HF, and may be not possible to do a safe HF today but from processing power, bandwidth and storage is totally valid and Wang Chung proposal has solid grounds.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regards&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Juan&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; From: Alphonse Pace [mailto:alp.bitcoin at gmail.com &amp;lt;mailto:alp.bitcoin at gmail.com&amp;gt;] &lt;br/&gt;&amp;gt; Sent: Tuesday, March 28, 2017 2:53 PM&lt;br/&gt;&amp;gt; To: Juan Garavaglia &amp;lt;jg at 112bit.com &amp;lt;mailto:jg at 112bit.com&amp;gt;&amp;gt;; Wang Chun &amp;lt;1240902 at gmail.com &amp;lt;mailto:1240902 at gmail.com&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; Cc: Bitcoin Protocol Discussion &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Subject: Re: [bitcoin-dev] Hard fork proposal from last week&amp;#39;s meeting&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Juan,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I suggest you take a look at this paper: &lt;a href=&#34;http://fc16.ifca.ai/bitcoin/papers/CDE&#43;16.pdf&#34;&gt;http://fc16.ifca.ai/bitcoin/papers/CDE&#43;16.pdf&lt;/a&gt; &amp;lt;&lt;a href=&#34;http://fc16.ifca.ai/bitcoin/papers/CDE&#43;16.pdf&amp;gt&#34;&gt;http://fc16.ifca.ai/bitcoin/papers/CDE&#43;16.pdf&amp;gt&lt;/a&gt;;  It may help you form opinions based in science rather than what appears to be nothing more than a hunch.  It shows that even 4MB is unsafe.  SegWit provides up to this limit.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 8MB is most definitely not safe today.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Whether it is unsafe or impossible is the topic, since Wang Chun proposed making the block size limit 32MiB.  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Wang Chun,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Can you specify what meeting you are talking about?  You seem to have not replied on that point.  Who were the participants and what was the purpose of this meeting?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -Alphonse&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tue, Mar 28, 2017 at 12:33 PM, Juan Garavaglia &amp;lt;jg at 112bit.com &amp;lt;mailto:jg at 112bit.com&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Alphonse,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; In my opinion if 1MB limit was ok in 2010, 8MB limit is ok on 2016 and 32MB limit valid in next halving, from network, storage and CPU perspective or 1MB was too high in 2010 what is possible or 1MB is to low today.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If is unsafe or impossible to raise the blocksize is a different topic. &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Regards&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Juan&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; From: bitcoin-dev-bounces at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev-bounces at lists.linuxfoundation.org&amp;gt; [mailto:bitcoin-dev-bounces at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev-bounces at lists.linuxfoundation.org&amp;gt;] On Behalf Of Alphonse Pace via bitcoin-dev&lt;br/&gt;&amp;gt; Sent: Tuesday, March 28, 2017 2:24 PM&lt;br/&gt;&amp;gt; To: Wang Chun &amp;lt;1240902 at gmail.com &amp;lt;mailto:1240902 at gmail.com&amp;gt;&amp;gt;; Bitcoin Protocol Discussion &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt;&lt;br/&gt;&amp;gt; Subject: Re: [bitcoin-dev] Hard fork proposal from last week&amp;#39;s meeting&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; What meeting are you referring to?  Who were the participants?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Removing the limit but relying on the p2p protocol is not really a true 32MiB limit, but a limit of whatever transport methods provide.  This can lead to differing consensus if alternative layers for relaying are used.  What you seem to be asking for is an unbound block size (or at least determined by whatever miners produce).  This has the possibility (and even likelihood) of removing many participants from the network, including many small miners.  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; 32MB in less than 3 years also appears to be far beyond limits of safety which are known to exist far sooner, and we cannot expect hardware and networking layers to improve by those amounts in that time.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It also seems like it would be much better to wait until SegWit activates in order to truly measure the effects on the network from this increased capacity before committing to any additional increases.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -Alphonse&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tue, Mar 28, 2017 at 11:59 AM, Wang Chun via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;ve proposed this hard fork approach last year in Hong Kong Consensus&lt;br/&gt;&amp;gt; but immediately rejected by coredevs at that meeting, after more than&lt;br/&gt;&amp;gt; one year it seems that lots of people haven&amp;#39;t heard of it. So I would&lt;br/&gt;&amp;gt; post this here again for comment.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The basic idea is, as many of us agree, hard fork is risky and should&lt;br/&gt;&amp;gt; be well prepared. We need a long time to deploy it.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Despite spam tx on the network, the block capacity is approaching its&lt;br/&gt;&amp;gt; limit, and we must think ahead. Shall we code a patch right now, to&lt;br/&gt;&amp;gt; remove the block size limit of 1MB, but not activate it until far in&lt;br/&gt;&amp;gt; the future. I would propose to remove the 1MB limit at the next block&lt;br/&gt;&amp;gt; halving in spring 2020, only limit the block size to 32MiB which is&lt;br/&gt;&amp;gt; the maximum size the current p2p protocol allows. This patch must be&lt;br/&gt;&amp;gt; in the immediate next release of Bitcoin Core.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; With this patch in core&amp;#39;s next release, Bitcoin works just as before,&lt;br/&gt;&amp;gt; no fork will ever occur, until spring 2020. But everyone knows there&lt;br/&gt;&amp;gt; will be a fork scheduled. Third party services, libraries, wallets and&lt;br/&gt;&amp;gt; exchanges will have enough time to prepare for it over the next three&lt;br/&gt;&amp;gt; years.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We don&amp;#39;t yet have an agreement on how to increase the block size&lt;br/&gt;&amp;gt; limit. There have been many proposals over the past years, like&lt;br/&gt;&amp;gt; BIP100, 101, 102, 103, 104, 105, 106, 107, 109, 148, 248, BU, and so&lt;br/&gt;&amp;gt; on. These hard fork proposals, with this patch already in Core&amp;#39;s&lt;br/&gt;&amp;gt; release, they all become soft fork. We&amp;#39;ll have enough time to discuss&lt;br/&gt;&amp;gt; all these proposals and decide which one to go. Take an example, if we&lt;br/&gt;&amp;gt; choose to fork to only 2MB, since 32MiB already scheduled, reduce it&lt;br/&gt;&amp;gt; from 32MiB to 2MB will be a soft fork.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anyway, we must code something right now, before it becomes too late.&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; _______________________________________________&lt;br/&gt;&amp;gt; bitcoin-dev mailing list&lt;br/&gt;&amp;gt; bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&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;&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/20170329/2a360938/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170329/2a360938/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:58:10&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0auxlhqu6e985c4gt6vdx62xc8emxjcxn68zphry869r8nnddc0qzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw06g90c</id>
    
      <title type="html">📅 Original date posted:2017-03-29 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0auxlhqu6e985c4gt6vdx62xc8emxjcxn68zphry869r8nnddc0qzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw06g90c" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsgqfmy8jkehhq3eqlajlr9mwv0gre6rqpaxh5gumw7w3x7spextcqhllw5u&#39;&gt;nevent1q…lw5u&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-03-29&lt;br/&gt;📝 Original message:&amp;gt; On 29 Mar 2017, at 04:50, Tom Zander &amp;lt;tomz at freedommail.ch &amp;lt;mailto:tomz at freedommail.ch&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Tuesday, 28 March 2017 19:34:23 CEST Johnson Lau via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; So if we really want to get prepared for a potential HF with unknown&lt;br/&gt;&amp;gt;&amp;gt; parameters,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; That was not suggested.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Maybe you can comment on the very specific suggestion instead?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Tom Zander&lt;br/&gt;&amp;gt; Blog: &lt;a href=&#34;https://zander.github.io&#34;&gt;https://zander.github.io&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://zander.github.io/&amp;gt&#34;&gt;https://zander.github.io/&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; Vlog: &lt;a href=&#34;https://vimeo.com/channels/tomscryptochannel&#34;&gt;https://vimeo.com/channels/tomscryptochannel&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://vimeo.com/channels/tomscryptochannel&amp;gt&#34;&gt;https://vimeo.com/channels/tomscryptochannel&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;Just take something like FlexTran as example. How you could get prepared for that without first finalising the spec?&lt;br/&gt;&lt;br/&gt;Or changing the block interval from 10 minutes to some other value?&lt;br/&gt;&lt;br/&gt;Also, fixing the sighash bug for legacy scripts?&lt;br/&gt;&lt;br/&gt;There are many other ideas that require a HF:&lt;br/&gt;&lt;a href=&#34;https://en.bitcoin.it/wiki/User:Gmaxwell/alt_ideas&#34;&gt;https://en.bitcoin.it/wiki/User:Gmaxwell/alt_ideas&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://en.bitcoin.it/wiki/User:Gmaxwell/alt_ideas&amp;gt&#34;&gt;https://en.bitcoin.it/wiki/User:Gmaxwell/alt_ideas&amp;gt&lt;/a&gt;;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170329/9f5a04ec/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170329/9f5a04ec/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:58:04&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsdwckrf95cqsrt7g9jx9xa27pz9c8a24ndf4em6hz2dsfx7dqdaagzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwlqu46m</id>
    
      <title type="html">📅 Original date posted:2017-03-28 📝 Original message:You ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsdwckrf95cqsrt7g9jx9xa27pz9c8a24ndf4em6hz2dsfx7dqdaagzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwlqu46m" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqs0e9kzaqrp0yvk40nwkuqcsaujerka4p9jyqjz06kkwfjdsu4l40g7z6709&#39;&gt;nevent1q…6709&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-03-28&lt;br/&gt;📝 Original message:You are probably not the first one nor last one with such idea. Actually, Luke wrote up a BIP with similar idea in mind:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/luke-jr/bips/blob/bip-hfprep/bip-hfprep.mediawiki&#34;&gt;https://github.com/luke-jr/bips/blob/bip-hfprep/bip-hfprep.mediawiki&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/luke-jr/bips/blob/bip-hfprep/bip-hfprep.mediawiki&amp;gt&#34;&gt;https://github.com/luke-jr/bips/blob/bip-hfprep/bip-hfprep.mediawiki&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;Instead of just lifting the block size limit, he also suggested to remove many other rules. I think he has given up this idea because it’s just too complicated.&lt;br/&gt;&lt;br/&gt;If we really want to prepare for a hardfork, we probably want to do more than simply increasing the size limit. For example, my spoonnet proposal:&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-February/013542.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-February/013542.html&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-February/013542.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-February/013542.html&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;In a HF, we may want to relocate the witness commitment to a better place. We may also want to fix Satoshi&amp;#39;s sighash bug. These are much more than simple size increase.&lt;br/&gt;&lt;br/&gt;So if we really want to get prepared for a potential HF with unknown parameters, I’d suggest to set a time bomb in the client, which will stop processing of transactions with big warning in GUI. The user may still have an option to continue with old rules at their own risks.&lt;br/&gt;&lt;br/&gt;Or, instead of increasing the block size, we make a softfork to decrease the block size to 1kB and block reward to 0, activating far in the future. This is similar to the difficulty bomb in ETH, which will freeze the network.&lt;br/&gt;&lt;br/&gt;&amp;gt; On 29 Mar 2017, at 00:59, Wang Chun via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;ve proposed this hard fork approach last year in Hong Kong Consensus&lt;br/&gt;&amp;gt; but immediately rejected by coredevs at that meeting, after more than&lt;br/&gt;&amp;gt; one year it seems that lots of people haven&amp;#39;t heard of it. So I would&lt;br/&gt;&amp;gt; post this here again for comment.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The basic idea is, as many of us agree, hard fork is risky and should&lt;br/&gt;&amp;gt; be well prepared. We need a long time to deploy it.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Despite spam tx on the network, the block capacity is approaching its&lt;br/&gt;&amp;gt; limit, and we must think ahead. Shall we code a patch right now, to&lt;br/&gt;&amp;gt; remove the block size limit of 1MB, but not activate it until far in&lt;br/&gt;&amp;gt; the future. I would propose to remove the 1MB limit at the next block&lt;br/&gt;&amp;gt; halving in spring 2020, only limit the block size to 32MiB which is&lt;br/&gt;&amp;gt; the maximum size the current p2p protocol allows. This patch must be&lt;br/&gt;&amp;gt; in the immediate next release of Bitcoin Core.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; With this patch in core&amp;#39;s next release, Bitcoin works just as before,&lt;br/&gt;&amp;gt; no fork will ever occur, until spring 2020. But everyone knows there&lt;br/&gt;&amp;gt; will be a fork scheduled. Third party services, libraries, wallets and&lt;br/&gt;&amp;gt; exchanges will have enough time to prepare for it over the next three&lt;br/&gt;&amp;gt; years.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; We don&amp;#39;t yet have an agreement on how to increase the block size&lt;br/&gt;&amp;gt; limit. There have been many proposals over the past years, like&lt;br/&gt;&amp;gt; BIP100, 101, 102, 103, 104, 105, 106, 107, 109, 148, 248, BU, and so&lt;br/&gt;&amp;gt; on. These hard fork proposals, with this patch already in Core&amp;#39;s&lt;br/&gt;&amp;gt; release, they all become soft fork. We&amp;#39;ll have enough time to discuss&lt;br/&gt;&amp;gt; all these proposals and decide which one to go. Take an example, if we&lt;br/&gt;&amp;gt; choose to fork to only 2MB, since 32MiB already scheduled, reduce it&lt;br/&gt;&amp;gt; from 32MiB to 2MB will be a soft fork.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Anyway, we must code something right now, before it becomes too late.&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;&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/20170329/f4f40e72/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170329/f4f40e72/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:58:03&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsw7u4cazkgy4cn0fc3fv436vpvvz4gw6t8epxhyhu30rjxyrhpxjczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw4pe0lf</id>
    
      <title type="html">📅 Original date posted:2017-01-27 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsw7u4cazkgy4cn0fc3fv436vpvvz4gw6t8epxhyhu30rjxyrhpxjczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw4pe0lf" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdlxjxkzen78wzj40dr0xuurmq9vq50ff3wxpt7z23wd06x7g6acqdtp9zq&#39;&gt;nevent1q…p9zq&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-01-27&lt;br/&gt;📝 Original message:&amp;gt; On 26 Jan 2017, at 03:32, Tom Harding &amp;lt;tomh at thinlink.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 1/24/2017 8:03 PM, Johnson Lau wrote:&lt;br/&gt;&amp;gt;&amp;gt; it seems they are not the same: yours is opt-out, while mine is opt-in.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I missed this.  So in fact you propose a self-defeating requirement on the new network, which would force unmodified yet otherwise compatible systems to change to support the new network at all. This is unlikely to be included in new network designs.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I suggest that the opt-out bits proposal comes from a more realistic position that would actually make sense for everyone.&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;I think there are some misunderstanding. You’d better read my source code if my explanation is not clear.&lt;br/&gt;&lt;br/&gt;From my understanding our proposals are the same, just with a bitwise not (~) before the network characteristic byte. So you set a bit to opt-out a network, while I set a bit to opt-in a network (and opt-out any other)
    </content>
    <updated>2023-06-07T19:55:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsfv62ax3nesuhs4kgfwad5fjw6nwctjd4f2kr542chlq9jzwhd2vczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw0gkvwv</id>
    
      <title type="html">📅 Original date posted:2017-01-25 📝 Original message:Yes, ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsfv62ax3nesuhs4kgfwad5fjw6nwctjd4f2kr542chlq9jzwhd2vczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw0gkvwv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsrt9lcraqpr7ka3cxk0tngn438f8ydm4ytmf2kvp3pwsxr3wgsassy4fhhh&#39;&gt;nevent1q…fhhh&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-01-25&lt;br/&gt;📝 Original message:Yes, it’s similar. I’ll quote your design if/when I formalise my BIP. But it seems they are not the same: yours is opt-out, while mine is opt-in.&lt;br/&gt;&lt;br/&gt;However, my proposal in nowhere depends on standardness for the protection. It depends on the new network enforcing a new SignatureHash for txs with an nVersion not used in the existing network. This itself is a hardfork and the existing network would never accept such txs.&lt;br/&gt;&lt;br/&gt;This is to avoid requiring any consensus changes to the existing network, as there is no guarantee that such softfork would be accepted by the existing network. If the new network wants to protect their users, it’d be trivial for them to include a SignatureHash hardfork like this, along with other other hardfork changes. Further hardforks will only require changing the network characteristic bit, but not the SignatureHash.&lt;br/&gt;&lt;br/&gt;If the hardfork designers don’t like the fix of BIP143, there are many other options. The simplest one would be a trivial change to Satoshi’s SignatureHash, such as adding an extra value at the end of the algorithm. I just don’t see any technical reasons not to fix the O(n^2) problem altogether, if it is trivial (but not that trivial if the hardfork is not based on segwit)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 25 Jan 2017, at 02:52, Tom Harding &amp;lt;tomh at thinlink.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 1/24/2017 6:33 AM, Johnson Lau via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; 9. If the network characteristic byte is non-zero, and the existing&lt;br/&gt;&amp;gt;&amp;gt; network characteristic bit is set, the masked version is used to&lt;br/&gt;&amp;gt;&amp;gt; determine whether a transaction should be mined or relayed (policy change)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Johnson,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Your proposal supports 8 opt-out bits compatible with may earlier&lt;br/&gt;&amp;gt; description:&lt;br/&gt;&amp;gt; &lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-July/012917.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-July/012917.html&lt;/a&gt;.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If the existing network really wants to play along, it should execute a&lt;br/&gt;&amp;gt; soft fork as soon as possible to support its own hard-fork opt-out bit&lt;br/&gt;&amp;gt; (&amp;#34;network characteristic bit&amp;#34;).  It is totally inadequate for a new&lt;br/&gt;&amp;gt; network to rely on non-standardness in the existing network to prevent&lt;br/&gt;&amp;gt; replay there.  Instead, in the absence of a supported opt-out bit in the&lt;br/&gt;&amp;gt; existing network, a responsible new network would allow something that&lt;br/&gt;&amp;gt; is invalid in the existing network, for transactions where replay to the&lt;br/&gt;&amp;gt; existing network is undesirable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It is an overreach for your BIP to suggest specific changes to be&lt;br/&gt;&amp;gt; included in the new network, such as the specific O(n^2) fix you&lt;br/&gt;&amp;gt; suggest.  This is a matter for the new network itself.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt;
    </content>
    <updated>2023-06-07T19:55:37&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs0k9zhqswh3w0067kar5n6kjtgcwqgpe9p0pdn935jek0nd29wlkqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwdu2u5y</id>
    
      <title type="html">📅 Original date posted:2017-01-24 📝 Original message:This ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs0k9zhqswh3w0067kar5n6kjtgcwqgpe9p0pdn935jek0nd29wlkqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwdu2u5y" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsqs4jyy75xah58h2erz5wme7cy8gguaqpfnhf3uvftlcd29x2sv4c4msppc&#39;&gt;nevent1q…sppc&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2017-01-24&lt;br/&gt;📝 Original message:This is a pre-BIP. Just need some formatting to make it a formal BIP&lt;br/&gt;&lt;br/&gt;Motivation:&lt;br/&gt;&lt;br/&gt;In general, hardforks are consensus rule changes that make currently invalid transactions / blocks valid. It requires a very high degree of consensus and all economic active users migrate to the new rules at the same time. If a significant amount of users refuse to follow, a permanent ledger split may happen, as demonstrated by Ethereum (“DAO hardfork&amp;#34;). In the design of DAO hardfork, a permanent split was not anticipated and no precaution has been taken to protect against transaction replay attack, which led to significant financial loss for some users.&lt;br/&gt;&lt;br/&gt;A replay attack is an attempt to replay a transaction of one network on another network. It is normally impossible, for example between Bitcoin and Litecoin, as different networks have completely different ledgers. The txid as SHA256 hash guarantees that replay across network is impossible. In a blockchain split, however, since both forks share the same historical ledger, replay attack would be possible, unless some precautions are taken.&lt;br/&gt;&lt;br/&gt;Unfortunately, fixing problems in bitcoin is like repairing a flying plane. Preventing replay attack is constrained by the requirement of backward compatibility. This proposal has the following objectives:&lt;br/&gt;&lt;br/&gt;A. For users on both existing and new fork, anti-replay is an option, not mandatory.&lt;br/&gt;&lt;br/&gt;B. For transactions created before this proposal is made, they are not protected from anti-replay. The new fork has to accept these transactions, as there is no guarantee that the existing fork would survive nor maintain any value. People made time-locked transactions in anticipation that they would be accepted later. In order to maximise the value of such transactions, the only way is to make them accepted by any potential hardforks.&lt;br/&gt;&lt;br/&gt;C. It doesn’t require any consensus changes in the existing network to avoid unnecessary debate.&lt;br/&gt;&lt;br/&gt;D. As a beneficial side effect, the O(n^2) signature checking bug could be fixed for non-segregated witness inputs, optionally.&lt;br/&gt;&lt;br/&gt;Definitions:&lt;br/&gt;&lt;br/&gt;“Network characteristic byte” is the most significant byte of the nVersion field of a transaction. It is interpreted as a bit vector, and denotes up to 8 networks sharing a common history.&lt;br/&gt;&lt;br/&gt;“Masked version” is the transaction nVersion with the network characteristic byte masked.&lt;br/&gt;&lt;br/&gt;“Existing network” is the Bitcoin network with existing rules, before a hardfork. “New network” is the Bitcoin network with hardfork rules. (In the case of DAO hardfork, Ethereum Classic is the existing network, and the now called Ethereum is the new network)&lt;br/&gt;&lt;br/&gt;“Existing network characteristic bit” is the lowest bit of network characteristic byte&lt;br/&gt;&lt;br/&gt;“New network characteristic bit” is the second lowest bit of network characteristic byte&lt;br/&gt;&lt;br/&gt;Rules in new network:&lt;br/&gt;&lt;br/&gt;1. If the network characteristic byte is non-zero, and the new network characteristic bit is not set, this transaction is invalid in the new network. (softfork)&lt;br/&gt;&lt;br/&gt;2. If the network characteristic byte is zero, go to 4&lt;br/&gt;&lt;br/&gt;3. If the network characteristic byte is non-zero, and the new network characteristic bit is set, go to 4, regardless of the status of the other bits.&lt;br/&gt;&lt;br/&gt;4. If the masked version is 2 or below, the new network must verify the transaction with the existing script rules. (no change)&lt;br/&gt;&lt;br/&gt;5. If the masked version is 3 or above, the new network must verify the signatures with a new SignatureHash algorithm (hardfork). Segwit and non-segwit txs will use the same algorithm. It is same as BIP143, except that 0x2000000 is added to the nHashType before the hash is calculated.&lt;br/&gt;&lt;br/&gt;Rules in the existing network:&lt;br/&gt;&lt;br/&gt;6. No consensus rule changes is made in the existing network.&lt;br/&gt;&lt;br/&gt;7. If the network characteristic byte is non-zero, and the existing network characteristic bit is not set, this transaction is not relayed nor mined by default (no change)&lt;br/&gt;&lt;br/&gt;8. If the network characteristic byte is zero, no change&lt;br/&gt;&lt;br/&gt;9. If the network characteristic byte is non-zero, and the existing network characteristic bit is set, the masked version is used to determine whether a transaction should be mined or relayed (policy change)&lt;br/&gt;&lt;br/&gt;10. Wallet may provide an option for setting the existing network characteristic bit.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Rationales (by rule number):&lt;br/&gt;&lt;br/&gt;1. This makes sure transactions with only existing network characteristic bit set is invalid in the new network (opt-in anti-replay for existing network transactions on the new network, objective A)&lt;br/&gt;&lt;br/&gt;2&#43;4. This makes sure time-locked transactions made before this proposals are valid in the new network (objective B)&lt;br/&gt;&lt;br/&gt;2&#43;5. This makes sure transactions made specifically for the new network are invalid in the existing network (anti-replay for new network transactions on the old network); also fixing the O(n^2) bug (objectives A and D)&lt;br/&gt;&lt;br/&gt;3. This is to prepare for the next hardfork from the new network (objective A)&lt;br/&gt;&lt;br/&gt;6, 7, 8. These minimise the change to the existing network (objective C)&lt;br/&gt;&lt;br/&gt;9, 10. These are not strictly needed until a hardfork is really anticipated. Without a significant portion of the network and miners implement this policy, however, no one should create such transactions. (objective A)&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Limitations:&lt;br/&gt;&lt;br/&gt;* It is not possible to protect transactions made before the proposal. To avoid a replay of such transactions, users should first spend at least a relevant UTXO on the new network so the replay transaction would be invalidated.&lt;br/&gt;&lt;br/&gt;* It is up to the designer of a hardfork to decide whether this proposal is respected. As the DAO hardfork has shown how harmful replay attack could be, all hardfork proposals (except trivial and totally uncontroversial ones) should take this into account&lt;br/&gt;&lt;br/&gt;* The size of network characteristic byte is limited to 8 bits. However, if we are sure that some of the networks are completely abandoned, the bits might be reused.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Reference implementation:&lt;br/&gt;&lt;br/&gt;A demo is available in my forcenet2 branch: &lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/7c2593946c4f3e210683110782d82f55473c682a&#34;&gt;https://github.com/jl2012/bitcoin/commit/7c2593946c4f3e210683110782d82f55473c682a&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/7c2593946c4f3e210683110782d82f55473c682a&amp;gt&#34;&gt;https://github.com/jl2012/bitcoin/commit/7c2593946c4f3e210683110782d82f55473c682a&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-January/013472.html&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-January/013472.html&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-January/013472.html&amp;gt&#34;&gt;https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-January/013472.html&amp;gt&lt;/a&gt;;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;An HTML attachment was scrubbed...&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170124/a3516bfa/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20170124/a3516bfa/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:55:36&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsr96znmd8jd3hf0shqf34453pwy0l5h9l5e7c0j7fwq32lrycdmuszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw89e5vr</id>
    
      <title type="html">📅 Original date posted:2016-12-14 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsr96znmd8jd3hf0shqf34453pwy0l5h9l5e7c0j7fwq32lrycdmuszypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw89e5vr" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsdg4pr732q4j7uxgxerelm4uj8pnq8k8cs6pr8na0refhk28363kqjyjf89&#39;&gt;nevent1q…jf89&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-14&lt;br/&gt;📝 Original message:I think that’s too much tech debt just for softforkability.&lt;br/&gt;&lt;br/&gt;The better way would be making the sum tree as an independent tree with a separate commitment, and define a special type of softfork (e.g. a special BIP9 bit). When the softfork is activated, the legacy full node will stop validating the sum tree. This doesn’t really degrade the security by more than a normal softfork, as the legacy full node would still validate the total weight and nSigOp based on its own rules. The only purpose of the sum tree is to help SPV nodes to validate. This way we could even completely redefine the structure and data committed in the sum tree.&lt;br/&gt;&lt;br/&gt;I’d like to combine the size weight and sigOp weight, but not sure if we could. The current size weight limit is 4,000,000 and sigop limit is 80,000. It’s 50:1. If we maintain this ratio, and define&lt;br/&gt;weight = n * (total size &#43;  3 * base size) &#43; sigop , with n = 50&lt;br/&gt;a block may have millions of sigops which is totally unacceptable.&lt;br/&gt;&lt;br/&gt;On the other hand, if we make n too low, we may allow either too few sigop, or a too big block size.&lt;br/&gt;&lt;br/&gt;Signature aggregation will make this a bigger problem as one signature may spend thousands of sigop&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 14 Dec 2016, at 20:52, Tier Nolan &amp;lt;tier.nolan at gmail.com&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wed, Dec 14, 2016 at 10:55 AM, Johnson Lau &amp;lt;jl2012 at xbt.hk &amp;lt;mailto:jl2012 at xbt.hk&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; In a sum tree, however, since the nSigOp is implied, any redefinition requires either a hardfork or a new sum tree (and the original sum tree becomes a placebo for old nodes. So every softfork of this type creates a new tree)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; That&amp;#39;s a good point.&lt;br/&gt;&amp;gt;  &lt;br/&gt;&amp;gt; The only way to fix this is to explicitly commit to the weight and nSigOp, and the committed value must be equal to or larger than the real value. Only in this way we could redefine it with softfork. However, that means each tx will have an overhead of 16 bytes (if two int64 are used)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The weight and sigop count could be transmitted as variable length integers.  That would be around 2 bytes for the sigops and 3 bytes for the weight, per transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It would mean that the block format would have to include the raw transaction, &amp;#34;extra&amp;#34;/tree information and witness data for each transaction.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On an unrelated note, the two costs could be combined into a unified cost.  For example, a sigop could have equal cost to 250 bytes.  This would make it easier for miners to decide what to charge.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On the other hand, CPU cost and storage/network costs are not completely interchangeable.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Is there anything that would need to be summed fees, raw tx size, weight and sigops that the greater or equal rule wouldn&amp;#39;t cover?&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On 12 Dec 2016, at 00:40, Tier Nolan via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; On Sat, Dec 10, 2016 at 9:41 PM, Luke Dashjr &amp;lt;luke at dashjr.org &amp;lt;mailto:luke at dashjr.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt; On Saturday, December 10, 2016 9:29:09 PM Tier Nolan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; Any new merkle algorithm should use a sum tree for partial validation and&lt;br/&gt;&amp;gt;&amp;gt; &amp;gt; fraud proofs.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; PR welcome.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; Fair enough.  It is pretty basic.&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/luke-jr/bips/pull/2&#34;&gt;https://github.com/luke-jr/bips/pull/2&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/luke-jr/bips/pull/2&amp;gt&#34;&gt;https://github.com/luke-jr/bips/pull/2&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; It sums up sigops, block size, block cost (that is &amp;#34;weight&amp;#34; right?) and fees.&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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; &amp;lt;&lt;a href=&#34;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&#34;&gt;https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &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/20161214/14889378/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161214/14889378/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:44&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsxnvqna7cwfuh9qh0s3gwajrugjgxywdrty8wtqxl2qz0kw8plkmqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwex3vkj</id>
    
      <title type="html">📅 Original date posted:2016-12-14 📝 Original message:I ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsxnvqna7cwfuh9qh0s3gwajrugjgxywdrty8wtqxl2qz0kw8plkmqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwex3vkj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqspwf75ysc4xzyxd5hyr4a8h0edysxye5c5mecjupkpvg9ecxykk4qxnyj3s&#39;&gt;nevent1q…yj3s&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-14&lt;br/&gt;📝 Original message:I think the biggest problem of sum tree is the lack of flexibility to redefine the values with softforks. For example, in the future we may want to define a new CHECKSIG with witness script version 1. That would be counted as a SigOp. Without a sum tree design, that’d be easy as we could just define new SigOp through a softfork (e.g. the introduction of P2SH SigOp, and the witness v0 SigOp). In a sum tree, however, since the nSigOp is implied, any redefinition requires either a hardfork or a new sum tree (and the original sum tree becomes a placebo for old nodes. So every softfork of this type creates a new tree)&lt;br/&gt;&lt;br/&gt;Similarly, we may have secondary witness in the future, and the tx weight would be redefined with a softfork. We will face the same problem with a sum tree&lt;br/&gt;&lt;br/&gt;The only way to fix this is to explicitly commit to the weight and nSigOp, and the committed value must be equal to or larger than the real value. Only in this way we could redefine it with softfork. However, that means each tx will have an overhead of 16 bytes (if two int64 are used)&lt;br/&gt;&lt;br/&gt;You could find related discussion here: &lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&#34;&gt;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&amp;gt&#34;&gt;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;Maybe we could make this optional: for nodes running exactly the same rules, they could omit the weight and nSigOp value in transmission. To talk to legacy nodes, they need to transmit the newly defined weight and nSigOp. But this makes script upgrade much complex.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 12 Dec 2016, at 00:40, Tier Nolan via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Sat, Dec 10, 2016 at 9:41 PM, Luke Dashjr &amp;lt;luke at dashjr.org &amp;lt;mailto:luke at dashjr.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; On Saturday, December 10, 2016 9:29:09 PM Tier Nolan via bitcoin-dev wrote:&lt;br/&gt;&amp;gt; &amp;gt; Any new merkle algorithm should use a sum tree for partial validation and&lt;br/&gt;&amp;gt; &amp;gt; fraud proofs.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; PR welcome.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Fair enough.  It is pretty basic.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; &lt;a href=&#34;https://github.com/luke-jr/bips/pull/2&#34;&gt;https://github.com/luke-jr/bips/pull/2&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/luke-jr/bips/pull/2&amp;gt&#34;&gt;https://github.com/luke-jr/bips/pull/2&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It sums up sigops, block size, block cost (that is &amp;#34;weight&amp;#34; right?) and fees.&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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;&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/20161214/3efb104f/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161214/3efb104f/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:43&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqswgllulwlr4s7lzkqjn7nx0fkzstnyu8e4jdvkazylpvn78t52xgczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw9hjxhs</id>
    
      <title type="html">📅 Original date posted:2016-12-14 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqswgllulwlr4s7lzkqjn7nx0fkzstnyu8e4jdvkazylpvn78t52xgczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw9hjxhs" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsyuj68vh750apevlm7nv2q4hgu8g00f35jcw6q0ck2rtmyw4myp2ck9uvmn&#39;&gt;nevent1q…uvmn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-14&lt;br/&gt;📝 Original message:&amp;gt; On 5 Dec 2016, at 04:00, adiabat &amp;lt;rx at awsomnet.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Interesting stuff! I have some comments, mostly about the header.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; The header of forcenet is mostly described in Luke’s BIP, but I have made some amendments as I implemented it. The format is (size in parentheses; little endian):&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Height (4), BIP9 signalling field (4), hardfork signalling field (3), merge-mining hard fork signalling field (1), prev hash (32), timestamp (4), nonce1 (4), nonce2 (4), nonce3 (compactSize &#43; variable), Hash TMR (32), Hash WMR (32), total tx size (8) , total tx weight (8), total sigops (8), number of tx (4), merkle branches leading to header C (compactSize &#43; 32 bit hashes)&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; First, I&amp;#39;d really rather not have variable length fields in the header.  It&amp;#39;s so much nicer to just have a fixed size.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Is having both TMR and WMR really needed?  As segwit would be required with this header type, and the WMR covers a superset of the data that the TMR does, couldn&amp;#39;t you get rid of the TMR?  The only disadvantage I can see is that light clients may want a merkle proof of a transaction without having to download the witnesses for that transaction.  This seems pretty minor, especially as once they&amp;#39;re convinced of block inclusion they can discard the witness data, and also the tradeoff is that light clients will have to download and store and extra 32 bytes per block, likely offsetting any savings from omitting witness data.&lt;br/&gt;&amp;gt; &lt;br/&gt;&lt;br/&gt;I foresee there will be 2 types of headers under this system: the 80 bytes short header and the variable length full header. Short headers are enough to link everything up. SPV needs the full header only if they are interested in any tx in a block. &lt;br/&gt;&lt;br/&gt;&amp;gt; The other question is that there&amp;#39;s a bit that&amp;#39;s redundant: height is also committed to in the coinbase tx via bip 34 (speaking of which, if there&amp;#39;s a hard-fork, how about reverting bip 34 and committing to the height with coinbase tx nlocktime instead?)&lt;br/&gt;&lt;br/&gt;you could omit the transmission of nHeight, as it is implied (saving 4bytes). Storing nHeight of headers is what every full and SPV nodes would do anyway&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Total size / weight / number of txs also feels pretty redundant.  Not a lot of space but it&amp;#39;s hard to come up with a use for them.  Number of tx could be useful if you want to send all the leaves of a merkle tree, but you could also do that by committing to the depth of the merkle tree in the header, which is 1 byte.&lt;br/&gt;&lt;br/&gt;Yes, I agree with you that these are not particularly useful. Sum tree is more useful but it has other problems (see my other reply)&lt;br/&gt;&lt;br/&gt;Related discussion: &lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&#34;&gt;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&amp;gt&#34;&gt;https://github.com/jl2012/bitcoin/commit/69e613bfb0f777c8dcd2576fe1c2541ee7a17208&amp;gt&lt;/a&gt;;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Also how about making timestamp 8 bytes?  2106 is coming up soon :)&lt;br/&gt;&lt;br/&gt;No need. See my other reply&lt;br/&gt;&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Maybe this is too nit-picky; maybe it&amp;#39;s better to put lots of stuff in for testing the forcenet and then take out all the stuff that wasn&amp;#39;t used or had issues as it progresses.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Thanks and looking forward to trying out forcenet!&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -Tadge&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/20161214/fcada227/attachment-0001.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161214/fcada227/attachment-0001.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsyuj68vh750apevlm7nv2q4hgu8g00f35jcw6q0ck2rtmyw4myp2czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwe5elrj</id>
    
      <title type="html">📅 Original date posted:2016-12-14 📝 Original message:&amp;gt; ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsyuj68vh750apevlm7nv2q4hgu8g00f35jcw6q0ck2rtmyw4myp2czypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwe5elrj" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqstxusq2xeu0lesu4rmmyxqkd8gw26uaezy4p63du3eu2xrl9r7yaglanere&#39;&gt;nevent1q…nere&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-14&lt;br/&gt;📝 Original message:&amp;gt; On 14 Dec 2016, at 19:07, Luke Dashjr &amp;lt;luke at dashjr.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Wednesday, December 14, 2016 11:01:58 AM Johnson Lau via bitcoin-dev wrote:&lt;br/&gt;&amp;gt;&amp;gt; There is no reason to use a timestamp beyond 4 bytes.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Actually, there is: lock times... my overflow solution doesn&amp;#39;t have a solution &lt;br/&gt;&amp;gt; to that. :x&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You could steal a few bits form tx nVersion through a softfork
    </content>
    <updated>2023-06-07T19:54:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsqfscfvpkhgqfh5wly20qvehkfrmsdqt37zpvwwjayn47mk4jyghgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw9prtnv</id>
    
      <title type="html">📅 Original date posted:2016-12-14 📝 Original message:There ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsqfscfvpkhgqfh5wly20qvehkfrmsdqt37zpvwwjayn47mk4jyghgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw9prtnv" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsvul99nlz03skdfyfwfhtsqu73uw94j8nynpk086car0k6nmrkvycgjexka&#39;&gt;nevent1q…exka&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-14&lt;br/&gt;📝 Original message:There is no reason to use a timestamp beyond 4 bytes. Just let it overflow. If a blockchain is stopped for more than 2^31 seconds, it’s just dead.&lt;br/&gt;&lt;br/&gt;&amp;gt; On 5 Dec 2016, at 19:58, Tom Zander via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; On Sunday, 4 December 2016 21:37:39 CET Hampus Sjöberg via bitcoin-dev &lt;br/&gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt;&amp;gt;&amp;gt; Also how about making timestamp 8 bytes?  2106 is coming up soon &lt;br/&gt;&amp;gt;&amp;gt; &lt;br/&gt;&amp;gt;&amp;gt; AFAICT this was fixed in this commit:&lt;br/&gt;&amp;gt;&amp;gt; &lt;a href=&#34;https://github.com/jl2012/bitcoin/commit/&#34;&gt;https://github.com/jl2012/bitcoin/commit/&lt;/a&gt;&lt;br/&gt;&amp;gt; fa80b48bb4237b110ceffe11edc14c813&lt;br/&gt;&amp;gt;&amp;gt; 0672cd2#diff-499d7ee7998a27095063ed7b4dd7c119R200&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; That commit hacks around it, a new block header fixes it. Subtle difference.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Tom Zander&lt;br/&gt;&amp;gt; Blog: &lt;a href=&#34;https://zander.github.io&#34;&gt;https://zander.github.io&lt;/a&gt;&lt;br/&gt;&amp;gt; Vlog: &lt;a href=&#34;https://vimeo.com/channels/tomscryptochannel&#34;&gt;https://vimeo.com/channels/tomscryptochannel&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;
    </content>
    <updated>2023-06-07T19:54:42&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqstyn62zg0wtmgnyd6a35tea0fj407ts93e0dz9j8ak77cxwhtg4pczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwk669w8</id>
    
      <title type="html">📅 Original date posted:2016-12-04 📝 Original message:Based ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqstyn62zg0wtmgnyd6a35tea0fj407ts93e0dz9j8ak77cxwhtg4pczypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwk669w8" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqswjzg05gdxcekuxllh52m3j98c50exjp5ejncguu53qrg2m2juz0cjc36vs&#39;&gt;nevent1q…36vs&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-12-04&lt;br/&gt;📝 Original message:Based on Luke Dashjr’s code and BIP: &lt;a href=&#34;https://github.com/luke-jr/bips/blob/bip-mmhf/bip-mmhf.mediawiki&#34;&gt;https://github.com/luke-jr/bips/blob/bip-mmhf/bip-mmhf.mediawiki&lt;/a&gt; , I created an experimental network to show how a new header format may be implemented.&lt;br/&gt;&lt;br/&gt;Basically, the header hash is calculated in a way that non-upgrading nodes would see it as a block with only the coinbase tx and zero output value. They are effectively broken as they won’t see any transactions confirmed. This allows rewriting most of the rules related to block and transaction validity. Such technique has different names like soft-hardfork, firmfork, evil softfork, and could be itself a controversial topic. However, I’d rather not to focus on its soft-hardfork property, as that would be trivial to turn this into a true hardfork (e.g. setting the sign bit in block nVersion, or setting the most significant bit in the dummy coinbase nLockTime)&lt;br/&gt;&lt;br/&gt;Instead of its soft-HF property, I think the more interesting thing is the new header format. The current bitcoin header has only 80 bytes. It provides only 32bits of nonce space and is far not enough for ASICs. It also provides no room for committing to additional data. Therefore, people are forced to put many different data in the coinbase transaction, such as merge-mining commitments, and the segwit commitment. It is not a ideal solution, especially for light wallets.&lt;br/&gt;&lt;br/&gt;Following the practice of segwit development of making a experimental network (segnet), I made something similar and call it the Forcenet (as it forces legacy nodes to follow the post-fork chain)&lt;br/&gt;&lt;br/&gt;The header of forcenet is mostly described in Luke’s BIP, but I have made some amendments as I implemented it. The format is (size in parentheses; little endian):&lt;br/&gt;&lt;br/&gt;Height (4), BIP9 signalling field (4), hardfork signalling field (3), merge-mining hard fork signalling field (1), prev hash (32), timestamp (4), nonce1 (4), nonce2 (4), nonce3 (compactSize &#43; variable), Hash TMR (32), Hash WMR (32), total tx size (8) , total tx weight (8), total sigops (8), number of tx (4), merkle branches leading to header C (compactSize &#43; 32 bit hashes)&lt;br/&gt;&lt;br/&gt;In addition to increasing the max block size, I also showed how the calculation and validation of witness commitment may be changed with a new header. For example, since the commitment is no longer in the coinbase tx, we don’t need to use a 0000….0000 hash for the coinbase tx like in BIP141.&lt;br/&gt;&lt;br/&gt;Something not yet done:&lt;br/&gt;1. The new merkle root algorithm described in the MMHF BIP&lt;br/&gt;2. The nTxsSigops has no meaning currently&lt;br/&gt;3. Communication with legacy nodes. This version can’t talk to legacy nodes through the P2P network, but theoretically they could be linked up with a bridge node&lt;br/&gt;4. A new block weight definition to provide incentives for slowing down UTXO growth&lt;br/&gt;5. Many other interesting hardfork ideas, and softfork ideas that works better with a header redesign&lt;br/&gt;&lt;br/&gt;For easier testing, forcenet has the following parameters:&lt;br/&gt;&lt;br/&gt;Hardfork at block 200&lt;br/&gt;Segwit is always activated&lt;br/&gt;1 minutes block with 40000 (prefork) and 80000 (postfork) weight limit&lt;br/&gt;50 blocks coinbase maturity&lt;br/&gt;21000 blocks halving&lt;br/&gt;144 blocks retarget&lt;br/&gt;&lt;br/&gt;How to join: codes at &lt;a href=&#34;https://github.com/jl2012/bitcoin/tree/forcenet1&#34;&gt;https://github.com/jl2012/bitcoin/tree/forcenet1&lt;/a&gt; , start with &amp;#34;bitcoind —forcenet&amp;#34; .&lt;br/&gt;Connection: I’m running a node at 8333.info with default port (38901)&lt;br/&gt;Mining: there is only basic internal mining support. Limited GBT support is theoretically possible but needs more hacking. To use the internal miner, writeup a shell script to repeatedly call “bitcoin-cli —forcenet generate 1”&lt;br/&gt;New RPC commands: getlegacyblock and getlegacyblockheader, which generates blocks and headers that are compatible with legacy nodes.&lt;br/&gt;&lt;br/&gt;This is largely work-in-progress so expect a reset every couple weeks&lt;br/&gt;&lt;br/&gt;jl2012&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;-------------- next part --------------&lt;br/&gt;A non-text attachment was scrubbed...&lt;br/&gt;Name: signature.asc&lt;br/&gt;Type: application/pgp-signature&lt;br/&gt;Size: 671 bytes&lt;br/&gt;Desc: Message signed with OpenPGP using GPGMail&lt;br/&gt;URL: &amp;lt;&lt;a href=&#34;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161205/126aae21/attachment.sig&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161205/126aae21/attachment.sig&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:41&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqsy6r52h3pcytj23w9e65qt233v44ps0qjn2yfr3teta6gwvp9e7vgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwcp3nrt</id>
    
      <title type="html">📅 Original date posted:2016-11-03 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqsy6r52h3pcytj23w9e65qt233v44ps0qjn2yfr3teta6gwvp9e7vgzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lwcp3nrt" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsfqap0lkugu0qsq60lrf4c7m526lwmjf2eufz0eawh440r7gu47hs0k3fpn&#39;&gt;nevent1q…3fpn&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-11-03&lt;br/&gt;📝 Original message:Interesting. I have implemented OP_CHECKSIGFROMSTACKVERIFY in a different way from the Elements. Instead of hashing the data on stack, I directly put the 32 byte hash to the stack. This should be more flexible as not every system are using double-SHA256&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/jl2012/bitcoin/commits/mast_v3_master&#34;&gt;https://github.com/jl2012/bitcoin/commits/mast_v3_master&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://github.com/jl2012/bitcoin/commits/mast_v3_master&amp;gt&#34;&gt;https://github.com/jl2012/bitcoin/commits/mast_v3_master&amp;gt&lt;/a&gt;;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&amp;gt; On 3 Nov 2016, at 01:30, Russell O&amp;#39;Connor via bitcoin-dev &amp;lt;bitcoin-dev at lists.linuxfoundation.org &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&amp;gt; wrote:&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; Hi all,&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; It is possible to implement covenants using two script extensions: OP_CAT and OP_CHECKSIGFROMSTACKVERIFY.  Both of these op codes are already available in the Elements Alpha sidechain, so it is possible to construct covenants in Elements Alpha today.  I have detailed how the construction works in a blog post at &amp;lt;&lt;a href=&#34;https://blockstream.com/2016/11/02/covenants-in-elements-alpha.html&#34;&gt;https://blockstream.com/2016/11/02/covenants-in-elements-alpha.html&lt;/a&gt; &amp;lt;&lt;a href=&#34;https://blockstream.com/2016/11/02/covenants-in-elements-alpha.html&amp;gt;&amp;gt&#34;&gt;https://blockstream.com/2016/11/02/covenants-in-elements-alpha.html&amp;gt;&amp;gt&lt;/a&gt;;.  As an example, I&amp;#39;ve constructed scripts for the Moeser-Eyal-Sirer vault.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; I&amp;#39;m interested in collecting and implementing other useful covenants, so if people have ideas, please post them.&lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; If there are any questions, I&amp;#39;d be happy to answer.  &lt;br/&gt;&amp;gt; &lt;br/&gt;&amp;gt; -- &lt;br/&gt;&amp;gt; Russell O&amp;#39;Connor&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 &amp;lt;mailto:bitcoin-dev at lists.linuxfoundation.org&amp;gt;&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;&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/20161103/1ad19231/attachment.html&amp;gt&#34;&gt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20161103/1ad19231/attachment.html&amp;gt&lt;/a&gt;;
    </content>
    <updated>2023-06-07T19:54:13&#43;02:00</updated>
  </entry>

  <entry>
    <id>https://nostr.ae/nevent1qqs26cn953pa5n3pa6rvqn4skpc34pk8sf725suhz4sfgv4qt2h7haqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw8wsa4t</id>
    
      <title type="html">📅 Original date posted:2016-08-16 📝 Original ...</title>
    
    <link rel="alternate" href="https://nostr.ae/nevent1qqs26cn953pa5n3pa6rvqn4skpc34pk8sf725suhz4sfgv4qt2h7haqzypyjlfqzaqufqj7u36ev37h6r25fthexgw9lmxvvwxcpewwm258lw8wsa4t" />
    <content type="html">
      In reply to &lt;a href=&#39;/nevent1qqsf9px53m37czvxuap67sfgrvscu6qmxsyrtkqdu2v7485adz2q3pq3zeymv&#39;&gt;nevent1q…eymv&lt;/a&gt;&lt;br/&gt;_________________________&lt;br/&gt;&lt;br/&gt;📅 Original date posted:2016-08-16&lt;br/&gt;📝 Original message:-----BEGIN PGP SIGNED MESSAGE-----&lt;br/&gt;Hash: SHA512&lt;br/&gt;&lt;br/&gt;A new BIP is prepared to deal with OP_IF and OP_NOTIF malleability in P2WSH:&lt;br/&gt;&lt;a href=&#34;https://github.com/jl2012/bips/blob/minimalif/bip-minimalif.mediawiki&#34;&gt;https://github.com/jl2012/bips/blob/minimalif/bip-minimalif.mediawiki&lt;/a&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/8526&#34;&gt;https://github.com/bitcoin/bitcoin/pull/8526&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;   BIP: x&lt;br/&gt;   Title: Dealing with OP_IF and OP_NOTIF malleability in P2WSH&lt;br/&gt;   Author: Johnson Lau &amp;lt;jl2012 at xbt.hk&amp;gt;&lt;br/&gt;   Status: Draft&lt;br/&gt;   Type: Standards Track&lt;br/&gt;   Created: 2016-08-17&lt;br/&gt;&lt;br/&gt;Abstract&lt;br/&gt;&lt;br/&gt;This document specifies proposed changes to the Bitcoin script validity rules in order to make transaction malleability related to OP_IF and OP_NOTIF impossible in pay-to-witness-script-hash (P2WSH) scripts.&lt;br/&gt;&lt;br/&gt;Motivation&lt;br/&gt;&lt;br/&gt;OP_IF and OP_NOTIF are flow control codes in the Bitcoin script system. The programme flow is decided by whether the top stake value is True or False. However, this behaviour opens a source of malleability as a third party may replace a True (False) stack item with any other True (False) value without invalidating the transaction.&lt;br/&gt;&lt;br/&gt;The proposed rules apply only to pay-to-witness-script-hash (P2WSH) scripts described in BIP141, which has not been activated on the Bitcoin mainnet as of writing. To ensure OP_IF and OP_NOTIF transactions created before the introduction of this BIP will still be accepted by the network, the new rules are not applied to non-segregated witness scripts.&lt;br/&gt;&lt;br/&gt;Specification&lt;br/&gt;&lt;br/&gt;In P2WSH, the argument for OP_IF and OP_NOTIF MUST be exactly an empty vector or 0x01, or the script evaluation fails immediately.&lt;br/&gt;&lt;br/&gt;This is deployed using BIP9 after segregated witness (BIP141) is activated. Details TBD.&lt;br/&gt;&lt;br/&gt;Compatibility&lt;br/&gt;&lt;br/&gt;This is a softfork on top of BIP141. The rules are enforced as a relay policy by the reference client since the first release of BIP141 (v0.13.1). To avoid risks of fund loss, users MUST NOT create P2WSH scripts that are incompatible with this BIP. An OP_0NOTEQUAL may be used before OP_IF or OP_NOTIF to imitate the original behaviour (which may also re-enable the malleability vector depending on the exact script).&lt;br/&gt;&lt;br/&gt;Implementation&lt;br/&gt;&lt;br/&gt;&lt;a href=&#34;https://github.com/bitcoin/bitcoin/pull/8526&#34;&gt;https://github.com/bitcoin/bitcoin/pull/8526&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Copyright&lt;br/&gt;&lt;br/&gt;This work is placed in the public domain.&lt;br/&gt;-----BEGIN PGP SIGNATURE-----&lt;br/&gt;Comment: GPGTools - &lt;a href=&#34;https://gpgtools.org&#34;&gt;https://gpgtools.org&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;iQGcBAEBCgAGBQJXs1LgAAoJEO6eVSA0viTSrJQL/A/womJKgi4FuyBTL9oykCss&lt;br/&gt;aBMNN9&#43;SLtmuH7SBgEUGZ8TFxa2st&#43;6RP6Imu&#43;Vvn4O5sXQl3DIXV&#43;X38X93sUYk&lt;br/&gt;wrjdpvdpqFFYJezPDESz6pR/6bZ1ES0aO2QqX578/8sqr8GO6L388s66vJeIGj4n&lt;br/&gt;0LWW8sdEypMuV3HUG/9FFdUNHgiVX1U0sS1rT3P4aN30JYtb7PQpd7r8KTMta7Rt&lt;br/&gt;L1VOZB&#43;W3m2m2YZ9gB7IRmMfzzNm2QXRTPIZXt2x3mYDBuMkp&#43;zEd5&#43;ogA4sBpgP&lt;br/&gt;wp2&#43;l/aos686v0w8QYiNUX2&#43;9Qpe7&#43;238qUpw75d2XJYmLzdotWFvmp4g1hP&#43;awX&lt;br/&gt;HEfwe4BUM&#43;El17LjrHkNeMWNJXMlhTtXb2i0XMj8tU5lZVHep4WpQ&#43;LEahrNlsUl&lt;br/&gt;FdFsi3q8HeWh8JsGaNCL41Bgbg/rKb5hUXyF6hTRHa//E6llOrpXRnsloKgBLv8c&lt;br/&gt;QezgKTAPwwgdjcS6Ek0AqgLp7bCFRijCduYH9i9uaQ==&lt;br/&gt;=lLIZ&lt;br/&gt;-----END PGP SIGNATURE-----
    </content>
    <updated>2023-06-07T19:52:55&#43;02:00</updated>
  </entry>

</feed>