OP_CAT 和无限虚无插图

介绍

您可能听说过重新启用 OP_CAT 作比特脚本语言升级。 获得新闻的来源,OP_CAT 被为“只有 10 行代码”、“实现契约实验的最佳方式”、“太强大”、“危险并导致矿工集中化”或“保证导致有争议的软分叉”。 我证明所有这些错误的。 OP_CAT 非常有用,可用作契约,而不是(单独)比特币的最佳下一步行动。 不,也不少。

为了证明这一点,我将探讨几(显然是不相交的)主题,其中一些主题在几个我来说还是新的。 我将尝试以一种在一个地方提供必要背景的方式来安排它。

OP_CAT 的作用作用

用CAT进行内省

让我们解决许多人第一次接触 OP_CAT 时遇到的棘手问题。 将堆栈中的两个项目合并为一个(AB CAT -> AB)的几行代码如何可能实现任何有趣的事情? Andrew Poelstra 在最近的采访中雄辩地解释了,我发布了一个愚蠢而简短的解释:

由于比特币脚本严格来说是一种验证语言,因此每个操作码都可以正或反向使用。 可以给脚本一个哈希并需要一个原像,或者给一个原像并需要使用 OP_SHA256 的哈希。 这一见解为我们提供了 OP_CAT 契约如何运作的前两部分。

如果比特币脚本可以访问其正在验证的交易的哈希值,则它可能要求支出堆栈提供哈希原像,以脚本所需的任何方式进行分割,然后验证该原像的任何特定部分。 这正是契约的含义——验证花费一些比特币的交易的一部分。

这很好,但是比特币没有像 OP_TXHASH 这样的操作码来让脚本访问交易的哈希。在这里,我们利用 BIP340 Schnorr 签名验证方程来要求用户提供哈希。如果用户提供一个值,如果脚本将字节 0x00 连接该值的末尾,该值将成为有效的交易哈希,如果脚本将字节 0x01 连接到该值,该值也将成为有效 BIP340 签名的一部分(某些其他参数是固定的)。

结合这些技术,使 OP_CAT 能够检查其支出交易中可以签名的任何部分,甚以某些有限的方式回顾其父交易。 通过一些仔细的编码技术,人们可以构建 Purrfect VaultsCatVM

CAT 的其他用途

但我们不应该。 使用 OP_CAT 构建这些东西会导致难以维护的令人厌恶的结果。 相反,我们应该使用 OP_CAT 来实现它的好处,并且有很多好处:它可以实现 OP_CHECKSEPARATESIG 的等效功能、检查 Merkle 包含证明、​​将签名验证数据 OP_CHECKSIGFROMSTACK 结合起来等等。

CAT 问题

现在我们知道了 CAT 的作用,那么问题出在哪里呢? 为什么人们(包括我己)说它是一种危险的野兽? 使用上述自省技术,CAT 实现了两种特定的结构:算力托管和(据称)自动化做市商(AMM)。 直到最近,这两个因素都被认为是将 MEV 中心化引入比特币的重大风险。

MEV、MEVil 和矿工集中化

MEV(矿工可提取价值)这个术语有点令人困惑。 用最简单的解释来说,它包括交易费,我们希望将这笔费用支付给矿工,以帮助确保比特币在未来很长一段时间内的安全。 MEV 通常用于表示矿工可以从其区块中提取超出公共中网络上可见费用的附加价值。 这可能以带外支付、矿工参与合约并以有利于自己的方式重新排序交易的形式出现,甚至是矿工开采区块来彻底盗窃商品和服务,重新组织并双花向商家确认的付款。 所有这些形式的 MEV 通常都对网络参与者不利,因为矿工利用自己在网络中的地位来谋取自己的利益,而牺牲了其他网络参与者的利益。 然而,MEV 本身并不会通过推动矿工集中化而带来系统性问题,而只是特定受影响参与者的局部问题。

MEVil 是一个有时用于 MEV 的术语,它推动了矿工的集中化——我更喜欢集中化 MEV 这个术语,并将在未来使用它。 将 MEV 转变为集中式 MEV 需要满足以下几个条件:

  1. 提取必须非常困难,以至于开源块模板构建器无法合理地提取它
  2. 可提取的总价值必须随着矿工的比特币哈希率而增长
  3. 可开采价值必须证明开采成本合理

如果满足所有这些要求,那么只有足够大的矿工才会有动力开始提取 MEV。 一旦他们这样做了,由于获得了额外的收入,他们将能够超越规模较小的同行的增长。 MEV 的开采成本越高(对于任何矿工来说都不值得),它产生的集中压力越差。

那么,避免 MEV 中心化(在某种意义上)很简单:确保比特币上存在的 MEV 机会要么很容易提取,以至于每个人都可以这样做,要么提取的成本高于其价值(要么是因为它们太小,要么是因为它们太昂贵)。

欲了解更多信息,请查看@TheBlueMatt 的最新帖子。

哈希率托管 (原名 DrivechAIns)

许多前(在闪电网络Ark、Timeout Trees、roll-ups、BitVM 或 CatVM 等想法出现之前),侧被认为是比特币的终极扩容解决方案。 这个想法在概念上很简单:出于所有常见的去中心化原因,比特币区块的大小必须受到限制,但我们可以将侧链附加到比特币上,这些侧链可以具有更快的区块、更大的区块、更多的计算量等等。 然而,在实践中,实施侧链并不那么容易。 比特币的最终结算从根本上与工作证明相关,这是重新排序交易的不可证伪的成本,侧链如何继承这一点? 另外,比特币如何在侧链之间转入和转出? 回答这两个问题的最著名的提案称为驱动链(BIP 300 和 301)。 我不会让你厌倦传动链的细节,但我只想说,这种侧链系统只有两种结果:要么它们相对未使用(因此无用),要么它们被广泛使用并成为事实上的块大小增加比特币。 这种事实上的区块大小增加是中心化 MEV 的一种形式,其中只有较大的矿工才能以成本有效的方式参与潜在的大型且复杂的侧链区块提供的额外收入机会。

可以使用 OP_CAT 构建的算力托管是 DriveChains 提案的一小部分。 这是一个限制侧链提款的系统,通过使用一个计数器来限制侧链提款,该计数器的值只能由矿工更改,从一个较高的值开始,并且在处理侧链提款之前必须达到零。 这据称是从侧链进行的“不信任”转移,但实际上建了一个矿工联盟,控制着侧链中持有的所有比特币。

自从 Drivechains 提案制定以来,将任何可用于在矿工控制的柜台上创建提款的提案称为“Drivechains”已经变得很常见(这对我们不利)。 希望现在已经楚为什么这种不恰当的简写没有帮助——驱动链要么毫无价值,要么危险,但算力托管只是将某些交易结果的控制权转移给矿工隐式联盟的一种方式。

代币和 AMM

代币

出于我永远无法完全理解的原因,人类喜欢好的代币(或坏的代币,或者只是代币)。几乎从比特币诞生之初,就有人讨论如何将其他代币嵌入协议,从 Colored Coins 和 Counterparty,到最近的 TaProot AsSetsRunes。所有这些协议都有一个共同点:它们需要一个比特币交易的外部索引,该索引要么了解外部数据,要么处理来自比特币交易序列的数据,以确定协议内代币的转换。本文的重点是,比特币锁定脚本完全不知道代币的存在,甚至验证交易的比特币节点也不知道代币的存在(即,即使比特币锁定脚本可以完全访问完整的比特币 UTXO 集,也无法发现任何这些代币的状态)。

自动化做市商(AMM)

在其他区块链系统上,称为 AMM 的合约通常用于(例如)通过以固定价格买卖来挂钩两种代币之间的比率。 可以在 AMM 中编码的规则超出了本文的范围。 可以说,AMM 为 MEV 创造了巨大的机会,因为需要私人交换关系来最大化 MEV 的回报,同时也集中了 MEV。 这经常被用来作为反对构建更具表现力的比特币脚本的论据——我们确实希望避免将比特币网络暴露在中心化 MEV 的变幻莫测之下。 然而,正如我上面所描述的,无论多么富有表现力,比特币脚本根本没有实用的方法来评估除比特币之外的任何代币的状态。 比特币脚本无法找到稀有卫星。 他们找不到符文平衡。 他们无法识别主根资产

如果无法获取有关非比特币资产处置的任何信息,基于比特币脚本的 AMM 的整个概念就不再有意义。 令牌位置可以通过预言机的签名进行证明,但预言机证明不会构成 AMM。 它们可用于促进特定的手动交易,但不是耐用的自动化系统。 此外,这样一个基于预言机的系统现在就可以在不改变比特币的情况下构建。

结论

正如您希望看到的那样,CAT 并不是那么可怕的野兽。 它根本就不是什么野兽。 它既没有无限的能力,也没有神奇的力量。 这只是一个非常有帮助的小操作码。 我们可能想要避免的一件事是在没有其他方法(例如 OP_TXHASH、OP_TX 或两者)进行事务自省的情况下激活 OP_CAT。 即使使用 LNHANCE 启用它也是对 OP_CAT 本身的改进,因为它减少了实现许多 OP_CAT 自省协议所需的脚本的大小和复杂性。

这是 Brandon Black 的客座文章。表达的观点完全是他们自己的观点,并不一定反映 BTC Inc 或 Bitcoin MAGAzine 的观点。

#OP_CAT #和无限虚无