<oembed><type>rich</type><version>1.0</version><author_name>npub1tfk373zg9dnmtvxnpnq7s2dkdgj37rwfj3yrwld7830qltmv8qps8rfq0n</author_name><author_url>https://nostr.ae/npub1tfk373zg9dnmtvxnpnq7s2dkdgj37rwfj3yrwld7830qltmv8qps8rfq0n</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2017-09-19&#xA;📝 Original message:On Tuesday 19 September 2017 12:46:30 AM Mark Friedenbach via bitcoin-dev &#xA;wrote:&#xA;&gt; After the main discussion session it was observed that tail-call semantics&#xA;&gt; could still be maintained if the alt stack is used for transferring&#xA;&gt; arguments to the policy script.&#xA;&#xA;Isn&#39;t this a bug in the cleanstack rule?&#xA;&#xA;(Unrelated...)&#xA;&#xA;Another thing that came up during the discussion was the idea of replacing all &#xA;the NOPs and otherwise-unallocated opcodes with a new OP_RETURNTRUE &#xA;implementation, in future versions of Script. This would immediately exit the &#xA;program (perhaps performing some semantic checks on the remainder of the &#xA;Script) with a successful outcome.&#xA;&#xA;This is similar to CVE-2010-5141 in a sense, but since signatures are no &#xA;longer Scripts themselves, it shouldn&#39;t be exploitable.&#xA;&#xA;The benefit of this is that it allows softforking in ANY new opcode, not only &#xA;the -VERIFY opcode variants we&#39;ve been doing. That is, instead of merely &#xA;terminating the Script with a failure, the new opcode can also remove or push &#xA;stack items. This is because old nodes, upon encountering the undefined &#xA;opcode, will always succeed immediately, allowing the new opcode to do &#xA;literally anything from that point onward.&#xA;&#xA;Luke</html></oembed>