概述与目标
本文档旨在构建一个系统性框架,用于组织和评估比特币现金(BCH)脚本系统可能的共识变更。我们将首先介绍脚本升级的整体思路,随后列举若干潜在改进方案,并基于路线图框架进行探讨。
本文档的聚焦范围限于 BCH 脚本的增量式升级。更宏大的提案(如全新的交易格式 MITRA)应另行评估。
核心升级理念
比特币现金的总体目标是成为“全球通用的点对点电子现金系统”。BCH 脚本应推动这一目标的实现,尤其通过赋能“电子化”部分——即支持灵活、实用的支出条件——来提供价值。简而言之,脚本应让 BCH 成为更优秀的电子现金。
BCH 脚本升级的评估标准:
- 填补当前空白:需弥补现有脚本语言的不足,或与其他部分形成互补。
- 全面评估影响:充分考虑对当前脚本组件及未来规划变更的潜在作用。
- 通用且简洁:优先选择通用型操作符(避免过度特化的“OP\_执行此功能”)。
- 推动应用场景:支持能进一步强化 BCH 作为电子现金功能的用例。
- 安全与效率:高度确信升级不会引发高资源消耗或潜在攻击向量。
比特币现金脚本路线图项目清单
请注意:列入本清单并不代表官方认可。部分提案可能最终被证实不可行而予以否决。此处仅作追踪和记录提案及其状态之用。
扩大整数范围
- 描述:当前算术操作符处理的整数被限制为带符号32位整数(输出可能溢出)。多项提案建议将其扩大至64位或128位。
- 状态:讨论阶段。社区普遍认同这是一个好主意,但尚无主导者组织具体实施。
- 关联影响:需综合考虑当前及未来算术操作码(如 OP\_MUL)的溢出行为。
- 应用场景:多个已知用例会受益于此变更,例如简化交易中“金额”字段的处理。
- 关注与评论:尽管概念上广受好评,具体细节仍需敲定。因其涉及脚本多个领域,推进过程需极度谨慎的设计与评审。
启用 OP\_MUL 操作码
- 描述:脚本已包含加、减、除等算术操作符,但乘法功能至今处于禁用状态。本提案建议重新启用乘法操作。
- 状态:讨论阶段。该操作码已在 BSV 激活,但 BCH 社区内推动其落地的动力不足。
- 关联影响:乘法操作码的溢出处理设计需与未来整数范围扩大同步考量。这是一个与其他算术操作符契合的通用“基础模块”。
- 应用场景:当前在契约(covenants)中执行价格操作的用户急需此功能。作为基础操作符,其引入能完善算术运算符体系。
- 关注与评论:关键确保溢出处理不会妨碍未来整数范围的扩展。该提案适配性良好,但缺乏紧迫的应用需求。
引入 OP\_REVERSEBYTES
- 描述:反转字符串中的字节顺序,可用于将大端序数值转换为小端序。
- 状态:提案/讨论阶段。已有草案规范提出,相关实现正在进行中。
- 关联影响:暂无已知的脚本其他部分交互影响。
- 应用场景:简化大端序数值处理,尤其是 SLP 交易中的“金额”字段。当前需多达30个字节操作码才能实现相同功能。该操作符还可用于翻转有时嵌入数据的交易ID(txid)。
- 关注与评论:除处理 SLP 金额字段外,尚不清楚是否存在更多应用场景。
推送交易上下文至堆栈(“OP\_PUSHSTATE”)
- 描述:将签名哈希预映像中的项目推入堆栈。这对契约非常有用,且比当前使用的签名哈希预映像“技巧”更高效。
- 状态:讨论阶段。已创建初步草案规范,目前正处于激烈讨论中,可能发生变更。
- 关联影响:暂无已知交互影响。
- 应用场景:契约、模拟“Sighash NoInput”或其他特殊签名哈希方案,可能还有更多。
- 关注与评论:仍处于非常初期的讨论阶段。
反向 OP\_ROLL
- 描述:脚本当前拥有许多奇特而高效的堆栈操作码(例如 OP\_2ROT),但缺少将栈顶元素插入任意较低深度的操作码。该功能有助于高级语言更高效地编译代码。
- 状态:讨论阶段。
- 关联影响:与现有堆栈操作码集合契合良好,填补了明显空白。
- 应用场景:对编译为 BCH 脚本的高级语言非常有用。
- 关注与评论:可通过多种方式实现,包括允许 OP\_ROLL 使用负输入。Pieter Wuille 曾提及此概念。
寄存器机制
- 描述:作为堆栈的补充,增加一系列用于存取“寄存器”值的操作码。例如,可实现8个寄存器及对应的16个推入和弹出操作码。
- 状态:讨论阶段(非常初步)。
- 关联影响:暂无已知交互影响。
- 应用场景:与“反向 OP\_ROLL”类似,对高级语言特别有用。
- 关注与评论:可能占用多个操作码编号。有观点认为在基于堆栈的语言中引入寄存器并非良策,因为这需要定义调用约定等以将子脚本组装为更大脚本,而基于堆栈的系统则能自然运作。
提高脚本大小与操作码计数限制
- 描述:随着更复杂脚本的出现,开发者开始触及大小限制。本提议旨在提高部分限制。
- 状态:讨论阶段。
- 关联影响:与脚本系统多个部分交互,尤其是对可能产生超线性资源消耗的操作码应用不同限制时。与此相伴的还可能改变未执行分支的计数方式。
- 应用场景:复杂脚本,特别是由高级语言编译而成的脚本。
- 关注与评论:因可能增加攻击面,任何限制提升都必须经过极其谨慎的评估。
常见问题
什么是 BCH 脚本?
BCH 脚本是比特币现金区块链上的一种编程语言,用于定义交易输出的花费条件。它通过操作码系统实现复杂的逻辑判断和计算功能,是构建智能合约和高级交易类型的基础。
脚本升级如何影响普通用户?
大多数升级对普通用户是透明的,其主要目标是提升开发者构建应用的能力。最终用户会间接受益于更丰富、更高效、更安全的金融服务和应用体验,例如更复杂的代币协议或更灵活的支付合约。若想深入了解这些技术如何转化为实际应用,不妨 👉 探索最新的开发者工具与资源。
为什么需要评估框架?
评估框架确保了升级过程的系统性和安全性。它帮助社区权衡每个提案的利弊,确保变更符合 BCH 的整体发展目标,避免引入不可预见的风险或冗余功能,从而稳健地推动生态发展。
所有列出的提案都会实施吗?
不一定。清单中的提案均处于讨论或研究阶段,其最终命运取决于社区共识、技术可行性及安全审计结果。许多提案可能被修改、合并或被证明无需实施而遭到否决。
如何参与 BCH 脚本的讨论与开发?
开发者可通过 GitHub、专业论坛和开发者会议参与讨论。关注官方仓库的规范草案、参与代码评审以及加入社区技术工作组都是有效的贡献方式。