原作者:傅,SatoshiLab,BTC万物岛工作室。
原文来源:武硕实景
比特币亚洲大会上讨论了一个与技术相关的话题。应该用比特币的脚本语言还原OP_CAT操作指令吗?随后,在上海万物岛BTC工作室的闭门会议上,大山先生也讨论了相关问题,并鼓励我们工作室的学生写一篇系统的总结文章。
为什么在行业会议上讨论指令的恢复?有那么重要吗?这件事涉及哪些问题?相信很多人都会有相关的疑问。
要了解恢复OP_CAT的问题,首先要了解一些与OP_CAT相关的基础知识。在开发语言中,操作码也称为指令或函数,是开发语言的基本组成部分。在本文中,我们都称之为指令。
1的作用是什么。1 OP_CAT?
Concat在许多开发语言中通常用于连接两个字符串,因此OP_CAT的缩写也应该来自concat一词,以形成OP_CAT的指令。
示例1:concat string str1=“Hello”在Java开发语言中;string str 2 =“world“;//注意有一个空格字符串str 3 = str 1。concat(str 2);system . out . println(str 3);输出是Hello world。
示例2:Concat select Concat(“my”、“SQL”)from result in 2:MySQL;执行的结果是显示字符“MySQL”。
Concat(即字符串拼接)在高级开发语言中经常使用,并且在许多情况下也非常重要。例如,一些场景:
数据显示和输出:在许多场景中,我们需要以字符串的形式显示或输出数据,例如将不同的数据项连接成一个完整的句子,将数据格式化为特定的字符串形式等等。这时,我们需要使用字符串拼接操作。
数据处理和操作:在数据处理和操作中,有时需要拼接多个字符串以生成新字符串,例如将多个文件路径拼接成一个完整的路径,将多个URL参数拼接成一个完整的URL等。这也是字符串拼接操作的一个重要应用。
如果比特币的语言是一种高级语言,毫无疑问会有这种字符连接功能,但比特币的开发语言具有一些特殊性,因此是否包含此指令存在争议。比特币的语言是一种与波兰范式相反的脚本语言,波兰范式是非图灵完备的。比特币脚本指令的常见类型:
关键词:
1。不变。如:OP_0,OP_FALSE。
2.过程控制。如:OP_IF、OP_NOTIF、OP_ELSE、...
3.堆叠。如:OP_TOALTSTACK(将输入推入辅助堆栈的item部分并将其从主堆栈中删除)、…
4.字符串。如:OP_CAT(连接两个字符串,禁用)、OP_SIZE(将栈顶元素的字符串长度推送到栈上(无需弹出元素))
5.位逻辑。如:OP_AND、OP_OR、OP_XOR。
6.算术逻辑。如:OP_ 1ADD(输入值加1)、OP_ 1SUB(输入值减1)。
7.加密。如:OP_SHA 1(输入SHA- 1算法哈希。)、OP_CHECKSIG。
8.伪关键词
9.保留关键词
比特币脚本指令的常见类型:
脚本:
1。支付到公钥-哈希到比特币地址。
2.支付到公钥(标准比特币生成交易)
3.无法消耗/删除的可证明产出
4.任何人都可以消费产出
5.猜测交易
五种标准类型的事务脚本包括:支付到公钥哈希(P2PKH)、支付到公钥、多重签名(最多限于15个密钥)、支付到脚本哈希(P2SH)和数据输出(OP_RETURN)。
网站上有详细的说明:https://en.bitcoin.it/wiki/Script.
1。2删除比特币语言中的OP_CAT和其他指令
事实上,在早期的比特币脚本语言中,也有字符串联的功能,即最初存在的“OP_CAT”操作码,后来被删除。在比特币的脚本语言中,OP_CAT可以实现多个UTXO解锁脚本字节串的联合连接处理,从而提高BTC主网的可编程特性和计算复杂度。然而,出于中本聪对安全性(以及可能的稳定性)的考虑,在20 10年8月,该操作码从比特币协议中删除。
在比特币的脚本语言中,一开始有许多与字符操作相关的指令,此后大多数都被删除了。删除了OP_CAT、OP_SUBSTR、OP_LEFT和OP_RIGHT,仅保留了OP_SIZE。如下图所示。
不仅删除了字符串操作指令,还删除了许多其他指令。
(1)位操作相关指令
②算术运算
为什么要剪那么多说明书?有关比特币技术发展和变化的详细信息,读者可以阅读导致比特币再次爆发的新技术发展摘要。
网上很多人都在说比特币会“恢复OP_CAT”,这是对这件事的严重误解。但是确实需要OP_CAT这样的字符链接功能,需要在Tapscript中添加这个类似的功能,所以才会出现“还原OP_CAT”的事件。
2.1恢复OP_CAT的提议和人们的误解
在介绍相关内容之前,我们需要了解一下BIP。BIP是比特币改进提案的缩写,直接翻译为:比特币改进提案。它包含以下状态,它们之间的状态转换如下图所示:
在2023 10中,比特币核心的开发者伊桑·海尔曼和Botanix实验室的首席软件工程师阿明·萨博里联合提出了一项名为“OP_CAT”的比特币改进提案草案,将这一讨论推向了一个新的高度。详细提案见网站:https://github.com/bip420/bip420.
Tapscript提案(12行)的新脚本如下
提案中还有一个重要段落:该实现受op _ cat的原始实现的启发,因为它在禁用它的提交“错误更改”4bd 188c之前就存在于比特币代码库中:
引用的原始比特币脚本代码(13行)如下:
BIP420是一个草案,只包含了简洁的12行程序代码(与最初的BTCscript非常相似),但它携带了清晰直观的函数属性,并定义了一个新的Tapscript操作码,允许在堆栈上连接两个值。这个操作码的实现灵感显然来自于原来删除的OP_CAT。这段文字用不同的颜色做了标记,强调并不是要恢复比特币原始指令中的相关指令,而是在Tapscript中重新实现一个类似的指令,Taproot的扩展。
在比特币指令中恢复一些指令和在Tapscript中生成新指令是不同的概念,影响范围也不同。
2.2哪些功能或应用需要恢复OP_CAT?
要完全理解这个问题需要两部分知识:
1部分中的(1)。1,我们已经知道字符串联是编程语言中非常常见和重要的函数,在高级开发语言或者功能丰富的编程语言中都需要用到。有了这个共识,再了解比特币的变化,就明白了恢复OP_CAT的根本原因。
目前一些想在主比特币网络上开发功能的团队和项目方希望恢复这个指令。有了这个指令,就可以实现更强大的智能合约(比特币上有智能合约,但用图灵就不完整了)。这一功能的加入将支持许多其他依赖智能合约的创新方法,也可以将比特币从仅仅是支付服务的网络发展成为功能更强、可扩展的计算平台。
(2)比特币已经做好了通过Taproot扩展功能的准备。这里我们需要详细了解一些东西:直根、MAST、直根脚本。最好看《导致比特币再次爆发的新技术发展综述》,了解比特币技术爆发的底层变化。
比特币技术通过隔离Segwit,扩展了比特币的OP_RETURN功能,直接扩展了比特币的实际存储空间,最大块可以达到4M。这些扩展的空间目前被广泛用于存储文本或图片等场景,但设计者的目的是扩展比特币的功能。由于几个BIP协议BIP340、BIP34 1和BIP342,其中BIP340引入了可以同时验证多个交易的Schnorr签名,取代了椭圆曲线数字签名算法(ECDSA),网络容量再次扩大,批量交易的处理速度加快,为部署复杂的智能合约提供了可能。BIP34 1实现了merkerized抽象语法树(MAST)来优化区块链上的事务数据存储;BIP342(Tapscript)使用比特币的脚本编码语言,扩展了比特币的原生脚本能力。
隔离所见证的Segwit和Taproot的空间扩张,导致了Schnorr、MAST tree和TapScripts的出现。他们的任务是扩展比特币主网的功能。4M的存储空间可以存储大量的程序代码。只要Tapscript足够强大,就可以开发很多应用。但是Tapscript刚刚诞生,很多指令还不完善,会逐步扩展Tapscript指令的功能。
即使我们通过第2节知道了恢复OP_CAT提案的内容和理由,又如何判断此类事件呢?因为不仅会增加OP_CAT,Tapscript还会增加其他指令,那么掌握这个增加的基本原理是什么呢?我们还需要从更宏观的角度来看待比特币。
3.1Web3.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)过度设计
过度设计的优势:
扩展性强:过度设计通常会考虑到未来的需求变化,能够应对各种扩展和变化。
更多的灵活性:过度设计的系统可以适应不同的情况和需求,具有更高的灵活性。
提高长期效率:后期之间调用底层可以开发很多功能,长期提高效率。
过度设计的缺点:
耗时:过度设计需要更多的时间和资源来完成,这可能会导致项目延迟。
浪费资源:过度设计可能引入冗余功能或复杂结构,浪费资源。
可能过于复杂:过度设计可能导致系统结构过于复杂,增加系统维护和理解的难度。
过度设计适用场景(总结了我的一些个人经验,参考了ChatGPT的部分内容):过度设计通常适用于非全新的项目,有实例可以参考,全新案例的初始需求较少或不够清晰,但预计需求可能会经常变化,所以可以借鉴已有的经验,在一定程度上使用过度设计的原理。比如大型软件系统或平台的底层可以考虑过度设计。
(2)适可而止
刚好够用的优点:
简单明了:足够的理念是专注于解决当前需求,保持系统简单易懂。
节省资源:足够的想法可以避免过度设计和不必要的功能,节省时间和资源。
快速交付:足够的思想可以快速交付可用的产品或系统,以满足用户的基本需求。
不够的缺点:
无法适应变化:刚刚好的想法可能无法适应未来需求的变化,需要进行大幅度的修改和调整。
可扩展性差:刚刚好的想法可能导致系统缺乏可扩展性,很难添加新的功能和组件。
适合场景:要实施的项目没有实例可参考,或者实例很少可参考。如果不知道发展方向和归宿,可以采用足够的方法。以及小项目完全适用于足够多的想法。对于创新项目来说,经常采用这个原则,因为未来是完全不确定的。
过度设计和充分性不是对立的概念,而是一种思维方式的不同取向。比特币的原生脚本BTCscript大多采用“适可而止”的原则,但Tapscript是原生步骤的扩展,参考一些编程场景可以稍微过度设计。还需要考虑使用Taproot和Tapscript。它们只是第一层和第二层之间的连接技术,不应该被过度使用,甚至局限于Tapscript以上的功能。这样我们就找到了设计Tapscript的下限和上限。
3.3辉煌的未来3.3 Web3.0(下一代互联网)
我们在3.2节表达了Tapscript的指令设计可以适当超设计,但上限是满足连接比特币第一层和第二层的需要。但是在早期,尤其是在比特币价格不太高(一个简单交易的执行不超过100 USD,被认为太高)以及分布式系统第二层或第三层不成熟的时候,很多人还是会开发太多的函数,这可能会导致Tapscript包含太多的指令。
另一方面,区块链技术和相关的分层建设,作为整个Web3.0的基础设施,比特币的Tapscript技术应该不会开发太多功能。参考第三节Web3.0的应用架构图。1。
在“从状态机的角度观察比特币的第二层,我们可以看到未来Web3.0应用的架构和构建路径”中,我们通过中国互联?网络发展统计报告了解Web2.0的丰富应用在统计报告中,我们可以看到Web2.0中的应用非常丰富,拥有庞大的用户群。这些应用包括:即时通讯、在线视频、短视频、在线支付、在线购物、搜索引擎、在线新闻、在线音乐、在线直播、网络游戏、在线外卖、网络文学、在线租车、在线办公、在线旅游预订、在线教育、在线医疗……,几乎涵盖了人们生活的所有领域。除了这些消费互联网内容,在产业互联网中也有很多应用。
2020.12-2021。6各类互联网应用的用户规模和网民使用率
这些主流应用尚未进入Web3.0的世界。当这些应用进入Web3.0时代时,用户对规模和性能的要求更高。因此,未来比特币主网承担的任务非常繁重,这使得有必要使用分层结构来构建一个真正的Web3.0世界。然后比特币主网上的功能主要是简单稳定,主要使用第一层和第二层之间的连接技术。我个人主张不要过度使用比特币第一层和第二层之间的连接技术,给Tapscript一个扩展空间,但功能不要太多。
通过前面的内容,我们知道了这个提议的真正内容,那就是在Tapscript中生成一个类似于OP_CAT的指令函数,而不是在比特币脚本中恢复原始的OP_CAT。谁对这项提议有决定权?比特币核心的开发团队?矿工?生态开发商?社区?
如果我们从利益的角度来分析,Tapscript中OP_CAT指令的生成将增加比特币主网的可编程性,并将生成更多的比特币主网程序和应用程序,这将增加主网上的手续费。矿工将是最积极的支持者,生态开发者也将支持他们,因为他们增加了开发的可能性。
比特币核心团队怎么看?核心团队一直坚持保守风格。它会同意吗?存在很大的不确定性。其实这个事件还涉及到一个很大的问题。对于Tapscript的开发来说,有必要制定一套规则。它不同于比特币主网的BTCScript。决策是否应该放松?比特币的BIP协议参考了以太坊的EIP协议,这可能是一个很好的分级方案。每份建议书采用不同的审核标准。
通过整理这篇文章,我个人判断这个提案最终会通过,否则Tapscript的功能会太弱,也许过程会有点曲折。
在比特币的世界里,由于没有权威机构,权利不是比特币世界的直接因素。只有经济因素将是决定性因素,通过什么最终是由大多数人的利益驱动的。即使Tapscript被过度设计,它也会因使用中的经济因素而得到纠正。
注册有任何问题请添加 微信:MVIP619 拉你进入群
打开微信扫一扫
添加客服
进入交流群
发表评论