伟大的脚本恢复:比特币的前进之路

2024年05月19日17:31:58 动漫 6577
文章作者: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_2mul、op_2div、op_mul、op_div 和 op_mod:数学操作符,用于乘法、除法和取模运算(返回除法的余数)。


除了上面列出的要恢复的操作码之外,rusty russell还提出了另外三个操作码,旨在简化不同操作码的组合:

op_ctv(或 txhash/等效操作码):允许对交易的某些部分进行精细化的强制执行,要求这些部分必须与预定义的内容完全一致。


csfs:允许对签名进行验证,不仅限于整个交易,这样可以要求脚本的某些部分或使用的数据必须进行签名才能执行。


op_tweakverify:验证基于 schnorr 的操作,涉及公钥,例如从聚合公钥中添加或减去单个公钥。这可以用来确保在某个参与方单方面离开共享的未使用交易输出(utxo)时,其他所有参与方的资金都被发送到一个不需要离开的参与方签名就能进行合作支出的聚合公钥。



我们为什么要这样做


第二层网络本质上是比特币基础层的延伸,它们在功能上受到基础层功能的约束。闪电网络在实际实现之前需要三个单独的软分叉:checklocktimeverify (cltv)、checksequenceverify (csv) 和隔离见证(segregated witness)。


如果没有更灵活的基础层,就无法构建更灵活的第二层网络。唯一的捷径就是信任第三方,这是非常简单明了的,我希望我们都渴望尽可能从与比特币规模化交互的每个方面中移除信任第三方。


我们需要能够做一些目前无法做到的事情,以便安全地将两个以上的人合并到一个单一的未使用交易输出(utxo)中,并能够在基础层上无需信任地执行。比特币脚本目前的灵活性还不足够。在最基本的层面上,我们需要契约,我们需要脚本能够实际强制执行关于执行交易的更精细细节,以确保像一个用户安全地退出其自己的 utxo 不会将其他用户的资金置于风险之中。


在更高的视角上,这就是我们需要的功能:


自身审查(introspection):我们需要能够实际检查堆栈上有关支出交易本身的特定细节,比如“这笔钱的这部分金额会流向某个输出的这个公钥”。这使得我可以使用我自己的特定 taproot 分支自行提取我的资金,同时确保我无法取走其他任何人的资金。执行的脚本将确保其他所有者的资金,被发送回其他用户的公钥组成的地址,以防其他参与者造成资金损失。


前向数据传递(forward data carrying):假设我们进一步发展了比如一个具有大量人的单个utxo的概念,任何人都可以随意进出。在这种情况下,我们需要一种方式来追踪谁有多少钱,通常会使用默克尔树及其根。这意味着当有人离开时,我们必须确保“记录”谁有权获得什么作为其他所有人资金的找零utxo的一部分。这基本上是内省的一个特定用途。


公钥修改:我们需要确保可以在堆栈上验证对聚合公钥的修改。在未使用交易输出(utxo)共享方案中,我们的目标是通过一个包含所有参与者的聚合公钥来促进资金的合作和高效流动。当有人单方面离开共享的utxo时,我们需要从聚合公钥中删除他们的个人公钥。如果事先没有计算所有可能的组合,那么唯一的选择就是验证从聚合公钥中减去一个公钥是否会生成由其余个人公钥组成的有效公钥。


如何确保安全:varops正如我上面所说的,禁用所有这些操作码的原因是为了解决dos攻击(通过发送大量垃圾请求,导致网络崩溃),这种攻击可以导致组成网络的节点崩溃。有一种方法可以解决这个问题,就是限制任何这些操作码可以使用的资源量。


当涉及到签名验证时,比特币脚本中最昂贵的部分,我们已经有了这样的解决方案,它被称为签名操作(sigops)预算。每次使用签名检查操作码都会消耗一定的“预算”,即每个区块允许的签名操作次数,这对于交易可以对用户产生的验证一个区块所需的成本设定了一个硬限制。


taproot 改变了这种工作方式,它不再使用单一的全局区块限制,而是每个交易都有自己的 sigops(签名操作)限制,与交易的大小成比例。这基本上等于相同的全局限制,但更容易理解每个交易有多少 sigops 可用。


taproot在处理每个交易的sigops(签名操作)限制方面的变化,为一种泛化方法提供了可能性,这也是rusty russell在varops限制方面提出的建议。这个想法是为每个重新激活的操作码分配一个成本,以考虑到每个操作码可能创建的最坏情况,即验证时产生的最昂贵的计算成本。这样,每个操作码都会有自的“sigops”限制,限制它在验证过程中可以消耗的资源量。这也将基于使用这些操作码的任何交易的大小,因此可以方便进行推理,同时仍然累积到每个区块的隐式全局限制。


这将解决dos攻击(通过发送大量垃圾请求,导致网络崩溃),因为这些垃圾交易,也是导致中本聪最初禁用所有这些操作码的原因。



前进的动力 


我相信你们中的许多人会想“这个改变太大了。”我能理解这种想法,但我认为作为一个提案要理解的一个重要方面是,我们不必全部做到。这个提案的价值并不一定在于完全恢复所有这些功能,而在于我们会全面审视一个庞大的基础组件套件,并问自己我们在功能方面真正想要的是什么。


这将是对过去三年争吵和辩论的完全转变,过去三年我们只是在争论微小的狭隘变化,这些变化只有某些功能。这就像一个大家都能聚集在一起的广场,共同审视未来的方向。也许我们最终会恢复所有这些功能,也许我们最终只会激活一些功能,因为共识是这些功能,是我们所有人都同意需要开启的功能。


无论最终结果如何,这都可以是对我们未来方向的整个对话产生积极影响的变化。我们可以实际绘制并全面了解情况,而不是在争论下一步该走哪条暗淡不清的路线时摸索前行。


这绝不是我们必须走的前进之路,但我认为这是我们决定要采取哪条路线的最佳机会。是时候再次开始以实际而有成效的方式合作了。


本文提供的信息仅用于一般指导和信息目的,本文的内容在任何情况下均不应被视为投资,业务,法律或税务建议。对于根据本文做出的个人决定,我们不承担任何责任,我们强烈建议您在采取任何行动之前进行自己的研究。尽管已尽最大努力确保此处提供的所有信息都是准确的和最新的,但可能会发生遗漏或错误。

动漫分类资讯推荐

爱达邮轮打造“哪吒闹海”主题航季,启航中国动画IP海上文化之旅 - 天天要闻

爱达邮轮打造“哪吒闹海”主题航季,启航中国动画IP海上文化之旅

6月5日,爱达邮轮宣布与上影元达成合作,在国产大型邮轮“爱达·魔都号”上推出“哪吒闹海”夏日主题航季。6月28日至8月底,这艘海上移动城邦将化身流动的东方美学空间,以沉浸式动画体验重构传统文化表达,为全球宾客开启一场跨越时空的国潮盛宴。经典IP的海上焕新作为中国动画“黄金时代”的代表作,《哪吒闹海》以“破茧...
​“上海速度”再刷新,乐高乐园电力配套提前一年点亮“积木王国”​​ - 天天要闻

​“上海速度”再刷新,乐高乐园电力配套提前一年点亮“积木王国”​​

5月31日,长三角地区首个国际IP亲子乐园——上海乐高乐园度假区正式进入测试阶段。在这座“积木王国”的背后,国网上海金山供电公司与国网上海营服中心携手打造了全周期电力服务体系,将“获得电力快捷高效”的承诺转化为实实在在的“电力积木”。从项目临时用电到正式供电,他们以专业的服务为乐园的顺利开园按下了“加速...
孙吉舜,被查 - 天天要闻

孙吉舜,被查

据黑龙江省纪委监委6月5日消息:黑龙江省牡丹江市政协党组副书记、副主席孙吉舜涉嫌严重违纪违法,目前正接受纪律审查和监察调查。孙吉舜(资料图)公开信息显示,孙吉舜,男,汉族,1969年8月出生,黑龙江省鸡西市人,1991年7月参加工作,1993年3月加入中国共产党,省委党校研究生,管理学学士。他长期在牡丹江市工作,曾...
白象为“多半”道歉 - 天天要闻

白象为“多半”道歉

近日,有多位网友发帖称,白象“多半袋面”系列产品包装上显示,“多半”是白象食品股份有限公司的注册商标。对此,白象食品客服表示,“多半”的确是商标,“多半袋/桶面”仅为产品名称,商品克重以包装上标注为准。今天(4日),此事登上微博热搜第一,许多网友质疑白象食品此举有玩文字游戏、误导消费者之嫌。白象“多半...
72小时大订超2600台,70.8万起售的尊界S800都是谁在买? - 天天要闻

72小时大订超2600台,70.8万起售的尊界S800都是谁在买?

【TechWeb】6月4日消息,鸿蒙智行旗舰尊界S800已于5月30日上市,售价区间为70.8万至101.8万元,官方战报显示,该车上市72小时大定已破2600台。根据官方披露的数据,尊界S800上市1小时大定破1000台、上市24小时大定突破1600台、上市48小时大定破2100台、上市72小时大定破2600台。华为常务董事、终端BG董事长余承东称,70%
实探奥乐齐与盒马NB在江浙沪市场的“贴身肉搏” - 天天要闻

实探奥乐齐与盒马NB在江浙沪市场的“贴身肉搏”

文 | 零售商业财经,作者 | 万城 ,编辑 | 喻博雅盒马NB与奥乐齐,中资与外资的硬折扣超市,正在江浙沪市场“捉对厮杀”;尤其近两个月来,盒马NB与奥乐齐在江浙多座城市密集落子,区域竞争火药味渐浓。3月28日,盒马NB无锡首店悦尚奥莱店正式开业;不到一个月后,4月19日,奥乐齐无锡首店圆融广场店开业,两家店直线距离不...
【统统告诉你】人口固定样本跟访调查开始了!这份“剧透”请收好! - 天天要闻

【统统告诉你】人口固定样本跟访调查开始了!这份“剧透”请收好!

按照国家统计局统计调查制度,6月1日至6月25日将在全国开展人口固定样本跟访调查。Q1:什么是人口固定样本跟访调查?国家统计局以第七次全国人口普查常住人口库为抽样框,采取分层和系统抽样直接抽取部分人群作为跟访对象,通过长期的跟访调查,了解其迁移、生育、死亡、就业等情况。Q2:为什么要开展人口固定样本跟访调查...