bitcoin-dev
Combined summary - Difficulty in emulating "weaker" OP_SUCCESS and why it should be a real opcode
In recent discussions on the Bitcoin Development Mailing List, a new approach to script execution in Bitcoin's scripting system has been broached.
The conversation was sparked by suggestions around modifying the behavior of scripts with respect to conditional success validation. Specifically, the dialogue revolved around the potential use of "OP_SEGMENT" as suggested by Rusty Russell, aiming to redefine the "OP_SUCCESS" functionality to facilitate more granular control over script validation. This proposed mechanism, leveraging "OP_CODESEPARATOR", seeks to make only specific segments of a script unconditionally valid, rather than the entire script. Such an adjustment would allow for a nuanced approach to script execution, where each segment before an "OP_CODESEPARATOR" is treated distinctly regarding its success validation. This proposal also introduces the concept of a "SUCCESS" flag, which plays a critical role in this nuanced execution method.
Further discussion highlighted the flexibility and strategic advantages offered by existing SUCCESSx codes in facilitating soft forks within the Bitcoin network. These codes are recognized for their foundational role in enabling upgrades without compromising the network’s stability. Andrew Poelstra's suggestion of transitioning one of these opcodes to an "OP_WEAK_SUCCESS" indicates a move towards utilizing these codes not just for network updates but for enhancing operational functionalities. This shift represents a broader perspective on developing the opcode infrastructure to cater to specialized applications while maintaining the integrity of the existing codebase.
The utility of an "OP_SUCCESS" opcode was also elaborated upon, especially in the context of implementing fraud proofs in Bitcoin script. This opcode's functionality, allowing for immediate marking of script execution as successful, presents a significant advantage in scenarios requiring efficient identification of mismatches. Despite the potential for emulating this functionality through script rewriting, the complexity and inefficiency of such an alternative underscore the value of directly implementing "OP_SUCCESS". Tools exist for script rewriting, as indicated by a GitHub resource, yet they highlight the convoluted nature of achieving the same outcomes without a dedicated opcode. The conversation thus advocates for simplifying script development processes by incorporating opcodes like "OP_SUCCESS", aiming to enhance both efficiency and developer accessibility within the Bitcoin scripting environment.