<oembed><type>rich</type><version>1.0</version><author_name>npub1kf0ppcjaguxekg24yx6smgxlu73qn0k8lm0t2wrqc0scpl7u3sgsmf3f58</author_name><author_url>https://nostr.ae/npub1kf0ppcjaguxekg24yx6smgxlu73qn0k8lm0t2wrqc0scpl7u3sgsmf3f58</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-10-05&#xA;📝 Original message:- It is true that hard forks produce a much cleaner outcome, in terms of&#xA;well defined behavior across the entire network.&#xA;&#xA;- Replacing an opcode should not result in undefined behavior.  The&#xA;non-upgraded behavior is defined and deterministic.&#xA;&#xA;- IsStandard remains an assistant.  Miners may mine non-standard&#xA;transactions.&#xA;&#xA;- &#34;Hard forks require everyone to upgrade and soft forks don&#39;t&#34;   Doesn&#39;t&#xA;require tons of explanation:  Non upgraded clients continue working on the&#xA;network even after the rules are upgraded.&#xA;&#xA;All those corrections aside, I do think there has been too much hysteria&#xA;surrounding hard forks.  Hard forks, when done right, produce a much&#xA;cleaner system for users.&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;On Mon, Oct 5, 2015 at 6:59 AM, Mike Hearn via bitcoin-dev &lt;&#xA;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&#xA;&gt; Putting aside stupid arguments about who is older or who starting using&#xA;&gt; the term SPV wallet first, let me try and make a better suggestion than&#xA;&gt; what&#39;s in the BIP. How about the following:&#xA;&gt;&#xA;&gt; A new flag is introduced to Core, --scriptchecks=[all,standardonly,none].&#xA;&gt; The default is all. When set to &#34;standardonly&#34;, non-standard scripts are&#xA;&gt; not checked but others are. This is similar to the behaviour during a soft&#xA;&gt; fork. In &#34;none&#34; you have something a bit like SPV mode, but still&#xA;&gt; calculating the UTXO set. This flag is simple and can be implemented in a&#xA;&gt; few lines of code. Then an unused opcode is used for CLTV, so making it a&#xA;&gt; hard fork.&#xA;&gt;&#xA;&gt; This has the following advantages:&#xA;&gt;&#xA;&gt;    - Nodes that want the pseudo-SPV behaviour of a soft fork can opt in&#xA;&gt;    to it if they want it. This prioritises availability (in a sense) over&#xA;&gt;    correctness.&#xA;&gt;&#xA;&gt;    - But otherwise, nodes will prioritise correctness by default, which&#xA;&gt;    is how it should be. This isn&#39;t PHP where nonsensical code the interpreter&#xA;&gt;    doesn&#39;t understand just does ...... something. This is financial software&#xA;&gt;    where money is at risk. I feel very strongly about this: undefined&#xA;&gt;    behaviour is fine *if you opted into getting it. *Otherwise it should&#xA;&gt;    be avoided whenever possible.&#xA;&gt;&#xA;&gt;    - SPV wallets do the right thing by default.&#xA;&gt;&#xA;&gt;    - IsStandard doesn&#39;t silently become a part of the consensus rules.&#xA;&gt;&#xA;&gt;    - All other software gets simpler. It&#39;s not just SPV wallets. Block&#xA;&gt;    explorers, for example, can just add a single line to their opcode map.&#xA;&gt;    With a soft fork they have to implement the entire soft fork logic just to&#xA;&gt;    figure out when an opcode transitioned from OP_NOP to CLTV and make sure&#xA;&gt;    they render old scripts differently to new scripts. And they face tricky&#xA;&gt;    questions - do they render an opcode as a NOP if the miner who built it was&#xA;&gt;    un-upgraded, or do they calculate the flag day and change all of them after&#xA;&gt;    that? It&#39;s just an explosion of complexity.&#xA;&gt;&#xA;&gt; Many people by now have accepted that hard forks are simpler, conceptually&#xA;&gt; cleaner, and prioritise correctness of results over availability of&#xA;&gt; results. I think these arguments are strong.&#xA;&gt;&#xA;&gt; So let me try addressing the counter-arguments one more time:&#xA;&gt;&#xA;&gt;    - Hard forks require everyone to upgrade and soft forks don&#39;t. I still&#xA;&gt;    feel this one has never actually been explained. There is no difference to&#xA;&gt;    the level of support required to trigger the change. With the suggestion&#xA;&gt;    above, if someone can&#39;t or won&#39;t upgrade their full node but can no longer&#xA;&gt;    verify the change, they can simply restart with -scriptchecks=standardonly&#xA;&gt;    and get the soft fork behaviour. Or they can upgrade and get their old&#xA;&gt;    security level back.&#xA;&gt;&#xA;&gt;    - Hard forks are somehow bad or immoral or can lead to &#34;schisms&#34;. This&#xA;&gt;    is just saying, if we hold a vote, the people who lose the vote might try&#xA;&gt;    starting a civil war and refuse to accept the change. That&#39;s not a reason&#xA;&gt;    to not hold votes.&#xA;&gt;&#xA;&gt;    But at any rate, they can do that with soft forks too: just decide&#xA;&gt;    that any output that contains OP_CLTV doesn&#39;t make it into the UTXO set.&#xA;&gt;    Eventually coins that trace back to such an output will become unusable in&#xA;&gt;    the section of the economy that decided to pick a fight.&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; _______________________________________________&#xA;&gt; bitcoin-dev mailing list&#xA;&gt; bitcoin-dev at lists.linuxfoundation.org&#xA;&gt; https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev&#xA;&gt;&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151005/6fe4130c/attachment.html&gt;</html></oembed>