<oembed><type>rich</type><version>1.0</version><author_name>npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_name><author_url>https://nostr.ae/npub17rld56k4365lfphyd8u8kwuejey5xcazdxptserx03wc4jc9g24stx9l2h</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-10-07&#xA;📝 Original message:On Tue, Sep 29, 2015 at 06:31:28PM +0000, Gregory Maxwell via bitcoin-dev wrote:&#xA;&gt; On Mon, Sep 28, 2015 at 10:48 AM, Mike Hearn via bitcoin-dev&#xA;&gt; &lt;bitcoin-dev at lists.linuxfoundation.org&gt; wrote:&#xA;&gt; &gt; There is no consensus on using a soft fork to deploy this feature. It will&#xA;&gt; &gt; result in the same problems as all the other soft forks - SPV wallets will&#xA;&gt; &gt; become less reliable during the rollout period. I am against that, as it&#39;s&#xA;&gt; &gt; entirely avoidable.&#xA;&gt; &gt; Make it a hard fork and my objection will be dropped.&#xA;&gt; I&#39;m surprised to see this response-- [...]&#xA;&gt; I am having a little difficulty making sense of this complaint. [...]&#xA;&#xA;I think I finally understand this objection.&#xA;&#xA;For a hard fork, activated by a majority of nodes/hashpower upgrading&#xA;to a new bitcoin release, the behaviour is:&#xA;&#xA; - upgraded bitcoin nodes: everything works fine&#xA;&#xA; - non-upgraded bitcoin nodes: total breakage. there will be a push&#xA;   alert telling you to upgrade. anyone who doesn&#39;t will think they&#39;re&#xA;   tracking &#34;bitcoin&#34; but will actually be tracking a new &#34;bitcoin-old&#34;&#xA;   altcoin. most non-upgraded miners will presumably realise they&#39;re&#xA;   wasting hashpower and stop doing this pretty quick; and remaining&#xA;   miners will only create blocks very slowly due to sudden reduced&#xA;   hashpower, without possibility of difficulty adjustment. users who&#xA;   don&#39;t uprade will try to do transactions, but won&#39;t see them confirm&#xA;   for hours or days due to lack of hashpower.&#xA;&#xA; - SPV nodes: they track the upgraded majority, everything works fine&#xA;   even if they don&#39;t upgrade&#xA;&#xA;For a soft fork, again activated by the majority of upgraded hashpower,&#xA;the behaviour is:&#xA;&#xA; - upgraded bitcoin nodes: everything works fine&#xA;&#xA; - non-upgraded bitcoin miners willing to mine newly unacceptable txs:&#xA;   may produce orphaned blocks; may be able to be forced into producing&#xA;   blocks that will be orphaned&#xA;&#xA; - other non-upgraded bitcoin nodes: everything works fine&#xA;&#xA; - SPV nodes: partial breakage -- may track invalid blocks for 1-2&#xA;   confirmations until the set of &#34;non-upgraded bitcoin miners willing&#xA;   to produce newly unacceptable txs&#34; becomes vanishingly few.&#xA;&#xA;In the hard fork case, all non-upgraded nodes get a DoS attack, but&#xA;aren&#39;t likey to be hit by doublespends. That&#39;s inconvenient, but it&#39;s&#xA;not too bad.&#xA;&#xA;In the soft fork case, if there&#39;s likely to be old nodes mining&#xA;previously invalid transactions, SPV clients become very unreliable,&#xA;to the point of possibly seeing semi-regular double-spends with 1 or&#xA;2 confirmation, until miners that aren&#39;t paying attention notice their&#xA;blocks are getting orphaned and upgrade. That is pretty bad IMHO; and&#xA;there are a lot more *people* running SPV clients than bitcoin nodes,&#xA;so its impact is potentially worse in both ways.&#xA;&#xA;Comparing generic hard forks versus generic soft forks, the above says&#xA;to me that a hard fork would be less harmful to users in general, and&#xA;thus a better approach.&#xA;&#xA;*But* a soft fork that only forbids transactions that would previously&#xA;not have been mined anyway should be the best of both worlds, as it&#xA;automatically reduces the liklihood of old miners building newly invalid&#xA;blocks to a vanishingly small probability; which means that upgraded&#xA;bitcoin nodes, non-upgraded bitcoin nodes, /and/ SPV clients *all*&#xA;continuing to work fine during the upgrade.&#xA;&#xA;AFAICS, that&#39;s what BIP65 achieves, as will similar OP_NOP* replacements&#xA;like BIP112.&#xA;&#xA;But that only applies to a subset of potential soft forks, not every&#xA;soft fork.&#xA;&#xA;Maybe a good way to think about it is something like this.  Consensus&#xA;(IsValid) is always less restrictive than (default) policy (previously&#xA;IsStandard, not sure how to summarise it now, maybe it&#39;s just OP_NOP&#xA;redefinition?).  So choosing a new consensus rule will be one of:&#xA;&#xA;  * even less restrictive than consensus (hard fork)&#xA;&#xA;  * more restrictive than consensus, but less restrictive than policy&#xA;    (safe soft fork)&#xA;&#xA;  * more restrictive than IsStandard etc (damaging soft fork)&#xA;&#xA;Hmm, in particular, following this line of thinking it&#39;s not clear to&#xA;me that BIP68 is actually less restrictive than current policy? At&#xA;least, I can&#39;t see anything that prevents txs with nSequence set to&#xA;something other than 0 or ~0 from being relayed?&#xA;&#xA;If it&#39;s not, and nodes currently happily mine and relay transactions&#xA;with nSequence set without caring what it&#39;s set to, doesn&#39;t this mean&#xA;BIP68 is of the &#34;damaging soft fork&#34; variety? That is, if it activated&#xA;as a soft-fork with a majority of miners using it, but a minority of ~5%&#xA;not upgraded, then&#xA;&#xA; - someone could construct an tx with nSequence set to sometime in&#xA;   the future, but not using OP_CSV&#xA;&#xA; - this tx would get relayed by old nodes (but not upgraded nodes&#xA;   due to CheckLockTime)&#xA;&#xA; - non-upgraded miners would mine it into a block immediately, which&#xA;   would then get orphaned by majority hashpower&#xA;&#xA; - before it got orphaned, non-upgraded nodes and SPV clients would&#xA;   be misled and vulnerable to double spend attacks of txs with 0, 1 or&#xA;   maybe 2 confirmations&#xA;&#xA;(BIP65 with OP_CLTV and BIP112 with OP_CSV don&#39;t have that problem as&#xA;they both redefine a non-standard opcode and would not get relayed or&#xA;mined by old, non-upgraded nodes, and are thus &#34;safe soft forks&#34; per&#xA;above terminology. This is just BIP68)&#xA;&#xA;Can anyone confirm or refute the above?&#xA;&#xA;Cheers,&#xA;aj</html></oembed>