Hotcoin Research:详解币安投
伟大的脚本恢复:比特币的前进之路
原文作者:SHINOBI
原文编译:Block unicorn
尽管提案范围相当广泛,但 Rusty Russell 的「伟大的脚本恢复」可能是比特币发展的前进之路的原因是什么?
Block unicorn 注释:Rusty Russell 是比特币社区的活跃开发者,在社区中非常受人尊敬。他曾在 Linux 内核开发方面有过卓越的工作,也参与了许多比特币核心开发项目。
比特币最初设计时拥有一个完整的脚本语言,旨在涵盖和支持用户未来可能提出的任何潜在安全用例。正如中本聪在消失之前所说的那样:
「比特币的本质是,一旦版本 0.1 发布,核心设计就被确定为其余生命周期。因此,我希望设计它来支持我所能想到的每一种可能的交易类型。问题在于,每件事都需要特殊的支持代码和数据字段,无论是否被使用,这会导致出现过多特殊情况。解决方案是脚本,它将问题概括化,这样,交易双方可以用特定条件来描述他们的交易,节点网络会根据这些条件进行评估或是验证。」- 中本聪, 2010 年 6 月 17 日
他的整个目的是给用户一个通用到足以让他们按照自己的意愿组织自己的交易类型的语言。即,给用户设计和实验如何编写他们自己的货币的空间。
在他消失之前,中本聪删除了其中的 15 个操作码,完全禁用了它们,并且在脚本引擎堆栈上添加了一个硬限制,限制了可以操作的数据块大小(520 字节)。这是因为他实际上搞砸了,留下了大量使得复杂脚本可能被用来对整个网络进行 DOS 攻击(发送大量垃圾请求,导致网络瘫痪)的方式,创建了巨大且成本高昂的交易,会导致节点崩溃。
这些操作码并不是因为中本聪认为这些功能是危险的,或者人们不应该利用它们构建能够实现的东西而被移除的,而仅仅(至少表面上是如此)是因为它们在没有资源限制的情况下对整个网络构成的风险,这样它们可能在不受限制的情况下对网络施加的最坏的验证成本。
从那时起,比特币的每次升级最终都是对剩余功能的功能优化,纠正中本聪留给我们的其他不那么严重的缺陷,并扩展我们剩下的脚本子集的功能。
伟大的脚本恢复
在五月初的奥斯汀比特币 ++ 大会上,核心闪电网络开发者拉斯蒂·拉塞尔在会议的第一场演讲中提出了一个非常激进的提案,他基本上提出了重新启用中本聪在 2010 年消失之前禁用的大多数操作码的想法。
自 2021 年 Taproot(Taproot 是比特币的一个重要升级,旨在提高隐私性、安全性和可扩展性)激活以来的几年里,开发领域实际上有点毫无目标。我们都知道,比特币并不具备足够的可扩展性,无法真正为世界上任何可观规模的人口提供自我主权的服务,甚至可能无法以最小化信任或托管的方式为能够超越非常大的托管机构和服务提供商、无法真正摆脱政府长臂约束的服务提供商提供扩展性。
这篇文章指出了比特币技术层面上的认识,这不是一个需要争论的问题。值得争论的问题是如何解决这个缺陷,这是一个非常有争议的话题。自从 Taproot 提出以来,每个人都在提出非常狭窄的提案,旨在解决只有特定使用案例才能实现的问题。
例如,ANYPREVOUT(APO)是一个提案,允许签名在不同的交易中重复使用,只要输入的脚本和金额相同,这个提案是专门为了优化闪电网络和其多方版本而设计的。CHECKTEMPLATEVERIFY(CTV)是一个提案,要求硬币只能由与预定义交易完全匹配的交易来支出,这个提案是为了通过使它们完全无信任来扩展预签名交易链的功能而设计的。OP_VAULT 是专门设计用来为冷存储方案设置「超时期」,这样用户就可以通过将其发送到更冷的多签设置来「取消」从冷存储中提取,以防止其密钥被泄露。
还有很多其他提案,但我想你已经明白了要点。过去几年来,每个提案都是为了要么稍微增加可扩展性,要么改进单一的小功能,因为这被认为是可取的。这是为什么这些讨论没有取得进展的根源。没有人对其他提案感到满意,因为它们没有满足他们想要看到的使用案例。
除了提案发起者之外,没有人认为任何提案是足够全面的,可以被视为合理的下一步行动。
这就是「伟大的脚本恢复」背后的逻辑。通过推动并分析对脚本的全面恢复,就像中本聪最初设计的那样,我们实际上可以尝试探索我们需要的整个功能空间,而不是争论和内讧关于现在哪种小型功能扩展足够好的问题。
OPCODES(操作码)
OP_CAT:从堆栈中获取两个数据,并将它们相加形成一个数据。
OP_SUBSTR:接受一个长度参数(以字节为单位),从堆栈中获取一段数据,将该长度的字节移除并放回堆栈。
OP_LEFT 和 OP_RIGHT:接受一个长度参数,从堆栈中获取一段数据,并从其一侧或另一侧移除指定长度的字节。
OP_INVERT、OP_AND、OP_OR、OP_XOR、OP_UPSHIFT 和 OP_DOWNSHIFT:接受一个数据元素,对其执行相应的位运算。
OP_ 2 MUL、OP_2D IV、OP_MUL、OP_DIV 和 OP_MOD:数学操作符,用于乘法、除法和取模运算(返回除法的余数)。
除了上面列出的要恢复的操作码之外,Rusty Russell 还提出了另外三个操作码,旨在简化不同操作码的组合:
OP_CTV(或 TXHASH/ 等效操作码):允许对交易的某些部分进行精细化的强制执行,要求这些部分必须与预定义的内容完全一致。
CSFS:允许对签名进行验证,不仅限于整个交易,这样可以要求脚本的某些部分或使用的数据必须进行签名才能执行。