不仅删除了字符串操作指令,还删除了不少其他指令。
(1)位操作相关指令
(2)算术操作
为什么要删减这么多指令?关于比特币技术发展变化的详细内容,读者可以阅读《导致比特币再次爆发的新技术发展总结》。
2. 为什么有人要「恢复 OP_CAT」
网上很多人都在说比特币要「恢复 OP_CAT」,这是众人对这个事情的一个严重的误解。但确实需要 OP_CAT 那样的字符连接功能,是要在 Tapscript 中增加这个类似功能,于是要产生「恢复 OP_CAT」这件事情。
2.1. 「恢复 OP_CAT」的提案与众人的误解
在介绍相关内容前,我们需要先对 BIP 有所了解。BIP 是 Bitcoin Improvement Proposal 的缩写,直接翻译为:比特币改进提案。包含以下几种状态,他们之间的状态转换如下图所示:
2023 年 10 月,Bitcoin Core 开发者 Ethan Heilman 和 Botanix Labs 首席软件工程师 Armin Sabouri 联合推出了一份比特币改进提案(BIP)草案,名为「OP_CAT」,让这个讨论到了一个新的高度。详细提案内容查看网址:https://github.com/bip420/bip420
Tapscript 提案的新脚本(12 行)如下
提案中还有一段重要的话:This implementation is inspired by the original implementation of OP_CAT as it existed in the Bitcoin codebase prior to the commit "misc changes" 4bd188c which disabled it:
参考的原有比特币脚本代码(13 行)如下:
BIP420 这份草案,仅包含简洁的 12 行程序代码(与原来的 BTCscript 很相似),却携带了明确直观的功能性质,定义了一个新的 Tapscript 操作码,允许在堆栈上连接两个值。此操作码实现的灵感明显来自原始被删除的 OP_CAT。这段文字被我用不同的颜色来标识,在强调不是在比特币的原始指令中恢复相关指令,而是在 Taproot 的扩展中 Tapscript 中重新实现一个类似指令。
在比特币的指令中恢复某些指令和在 Tapscript 中产生新指令是不同的概念,有不同的影响范围。
2.2. 哪些功能或应用需要恢复 OP_CAT
完全理解这个问题需要两部分知识:
(1)在 1.1 节中,我们已经知道在编程语言中字符连接 concat 是一个非常常见与重要的功能,在高级开发语言或者功能丰富一些的编程语言中都需要这个功能。有了这个共识,再了解到比特币的变化,就会理解恢复 OP_CAT 的根本原因。
当前一些想在比特币主网上面开发功能的团队与项目方很希望恢复这个指令。有了这个指令,可以实现功能更强大的智能合约(比特币上有智能合约,只是不是图灵完备的)。这个功能的添加,会支持许多其他依赖于智能合约的创新方法,还可以把比特币从仅为支付服务的网络,发展成一个更多功能、可扩展的计算平台。
(2)比特币已经通过 Taproot 为扩展功能做好了准备。在这里我们需要详细的了解一些知识:Taproot、MAST、Taproot Scripts。最好阅读《导致比特币再次爆发的新技术发展总结》,了解比特币技术爆发的底层变化。
比特币技术通过隔离见证 Segwit 扩充了比特币的 OP_RETURN 的功能,使得比特币可存储的实际空间直接扩大,区块最大可以到达 4M。这些扩大出来的空间,当前被人们大量的使用在存储文本或图片等场景,但设计者的目的是用于扩展比特币的功能。因为为了扩展功能产生的几个 BIP 协议 BIP340、BIP341 和 BIP342,其中 BIP340 引入了可以同时验证多个交易的 Schnorr 签名,取代了椭圆曲线数字签名算法(ECDSA),再一次扩大了网络容量并加快了批量交易的处理速度,为部署复杂的智能合约提供了可能性;BIP341 实现了默克尔化抽象语法树(MAST)来优化区块链上的交易数据存储;BIP342(Tapscript)采用比特币的脚本编码语言扩充的比特币原生脚本能力的不足。
由隔离见证 Segwit 与 Taproot 的空间扩大,导致了 Schnorr、MAST 树和 TapScripts 的产生,他们要完成的使命是比特币主网的功能扩大。4M 的存储空间可以存储大量的程序代码,只要 Tapscript 的功能足够强大,就能开发出非常多的应用。但当前 Tapscript 刚刚诞生,很多指令还不够完善,会出现逐步扩大 Tapscript 指令功能的情况。
3. 比特币协议在 Web3.0 中的地位与作用
即使通过第 2 节我们了解到了恢复 OP_CAT 的提案内容与原因,那我们怎么评判这类事件?因为不光要增加 OP_CAT,Tapscript 还会增加其他指令,那掌握这个增加的基本原则有哪些呢?我们还需要从更宏观的角度来看待比特币。
3.1. Web3.0 的应用架构与分层协议设计思想
在《从状态机的角度观察比特币二层,可以看到未来 Web3.0 应用的架构和建设路径》文章中,我们已经大致勾画出 Web3.0 的应用架构,如下图所示:
我们可以看到区块链是 Web3.0 中重要的基础设施,并且只有比特币网络适合作为分层结构中的最底层基础设施。这就是为什么说区块链是「以比特币为开局,以比特币生态为终局」,所有的其他区块链系统都是比特币的广义二层或测试技术。
了解了 Web3.0 的应用架构,我们还需要理解一些分层设计思想(尤其是底层应该具有的特征)。分层设计是一种人类处理复杂系统的手段和方法论,通过将系统划分为多个层次结构并定义各层之间的关系和功能,以实现系统的模块化、可维护性和可扩展性,从而提高系统的设计效率和可靠性。我们使用已有的案例来说明,如下图的 TCP/IP 协议:
在协议的底层,TCP 协议与 IP 协议只需要实现最简单,最基础的功能,那些应用层的协议,如 FTP、SMTP、IMAP、HTTP 等协议都在高层来实现,会封装在 TCP 协议和 IP 协议中。
如果比特币是类似 TCP/IP 协议的最底层协议,那么比特币主网原则上也要保持最简单,最基础的功能。那些丰富的功能,尤其是应用层的功能都需要在比特币的二层或三层协议上来实现。有了这个原则,我们会对明确的底层协议与上层协议有准确的判断,那么像 Tapscript 这样在比特币主网上实现的扩展功能,我们该怎么判断呢?
3.2. 过度设计与够用即可的两种做事哲学思想
为了增加我们的判断准确性,我们先了解两种做事的哲学思想:过度设计和够用即可。(也许我们知道了也没有用,因为比特币的发展决策是很多因素决定的,比特币的去中心化文化使得它的发展会由很多因素决定,或者是由人类的群体思想决定。)
过度设计和够用即可是两种不同的做事哲学思想,它们各自有不同的优缺点。以下是它们的优缺点和一些例子:
(1)过度设计
过度设计的优点:
- 可扩展性强:过度设计通常考虑了未来的需求变化,能够应对各种扩展和改变。
- 更具灵活性:过度设计的系统能够适应各种不同的情况和需求,具备更高的灵活性。
- 提高长期效率:很多功能可以在后期之间调用底层来开发,长期上看效率是提高的。
- 耗时:过度设计需要更多的时间和资源来完成,可能会导致项目延期。
- 资源浪费:过度设计可能会引入冗余的功能或复杂的结构,浪费了资源。
- 可能过于复杂:过度设计可能导致系统结构过于复杂,增加了系统维护和理解的难度。
- 简单明了:够用即可的思想注重解决当前需求,使系统保持简单和易于理解。
- 资源节约:够用即可的思想避免了过度设计和不必要的功能,节约了时间和资源。
- 快速交付:够用即可的思想可以快速交付可用的产品或系统,满足用户的基本需求。
- 无法适应变化:够用即可的思想可能无法适应未来的需求变化,需要进行较大的修改和调整。
- 可扩展性差:够用即可的思想可能导致系统缺乏可扩展性,难以添加新功能和组件。
各类互联网应用用户规模和网民使用率
这些主流应用都还没有进入到 Web3.0 的世界。当这些应用进入 Web3.0 时代后,用户的规模和性能要求更高。所以比特币主网承担的任务在未来是非常重,使得一定要用分层结构才能建立起来真正的 Web3.0 世界。那么在比特币主网上面的功能就以简单稳定为主,以服务一层与二层的连接技术为主。我个人主张不要过度使用比特币一层与二层的连接技术,给 Tapscript 一个扩展空间,但不要有太多的功能。
4. 是否恢复 OP_CAT 谁有决定权
通过前面的内容,我们知道了这个提案的真实内容,是在 Tapscript 中产生一个类似 OP_CAT 的指令功能,而不是恢复比特币脚本中原来的 OP_CAT。对于这个提案谁有决策权呢?比特币 Core 的开发团队?矿工?生态开发者?社区?
如果我们从利益的角度分析,Tapscript 中产生 OP_CAT 指令会增加比特币主网的可编程性,会产生更多的比特币主网程序和应用,这样就会增加主网上面的手续费。矿工会是最积极的支持者,生态开发者因为增加了开发的可能性也会支持。
比特币 Core 团队怎么考虑?一直以来 Core 团队秉持一种保守风格,会不会同意呢?有很大的不确定性。其实这个事件还牵扯出一个较大问题,对于 Tapscript 的发展,需要制定一套规则,它不同于比特币主网的 BTCScript,决策上是否也要适当宽松一些?比特币的 BIP 协议参考以太坊的 EIP 协议,作一下提案的分级也许是个不错的方法。对每种提案采用不同的审核标准。
通过整理这篇文章,我个人判断这个提案最终会获得通过,不然 Tapscript 的功能就太弱了,也许过程会有些曲折。
在比特币的世界,因为没有权威机构,权利在比特币的世界不是直接影响因素,只有经济因素才会是决定性的影响因素,什么会获得通过最终是由大多数人的利益驱动的。即使 Tapscript 被过度设计了,在使用中也会被经济因素矫正过来。


