Bitcoin Cash Script Roadmap: Assessing Incremental Upgrades to BCH Script

·

Goal and Scope

This document outlines a framework for evaluating potential consensus changes to Bitcoin Cash’s Script system. It presents an approach for Script upgrades and discusses specific proposals within the context of Bitcoin Cash’s broader roadmap.

Scope: Focuses on incremental Script improvements. Overarching proposals (e.g., new transaction formats like MITRA) fall outside this scope.

Approach

Bitcoin Cash aims to be peer-to-peer electronic cash accessible globally. Script enhances this by enabling flexible spending conditions, ensuring BCH functions as efficient electronic cash.

Criteria for Script Upgrades:

  1. Addresses gaps or complements existing Script features.
  2. Considers interactions with current/future Script components.
  3. Prioritizes generic, simple operators (avoid overly specific opcodes).
  4. Supports use-cases advancing BCH’s electronic cash goal.
  5. Minimizes risks (e.g., resource exhaustion, attack vectors).

Proposed Upgrades

1. Bigger Integers

2. OP_MUL

3. OP_REVERSEBYTES

4. OP_PUSHSTATE

5. Reverse OP_ROLL

6. Registers

7. Increase Script Limits


FAQ

Q1: Why focus on incremental Script upgrades?
A: Incremental changes minimize disruption while addressing immediate needs, ensuring backward compatibility.

Q2: How does OP_PUSHSTATE improve covenants?
A: It replaces inefficient sighash pre-image tricks with direct data access, reducing script complexity.

Q3: Are bigger integers a priority?
A: Yes, but implementation must carefully address overflow behavior and interactions with other opcodes.

Q4: What’s the next step for OP_REVERSEBYTES?
A: Awaiting community feedback and finalization of the draft specification.

👉 Explore Bitcoin Cash’s latest upgrades for deeper insights into Script enhancements.


Acknowledgements: Thanks to Mark Lundeberg and Amaury Séchet for their feedback.


### Key SEO Keywords:  
- Bitcoin Cash Script  
- BCH Script upgrades  
- `OP_MUL`  
- `OP_REVERSEBYTES`  
- `OP_PUSHSTATE`  
- Covenants