作者:帮主 来与:X,@bangzhu_x

了解 OP_CAT 这样的束缚条款提议

op_cat作为一种束缚条款提议,它最近得到了347的 BIP 编号。先了解一下 “束缚条款(covenant)” 是什么。

 1、咱们先要了解今天的比特币脚本(Bitcoin Script)的根本束缚性。在表象之下,比特币答应创立根本的智能合约:用代码来界说确定和解锁资金的规矩。可是,其编程言语 Bitcoin Script 非常束缚,仅在买卖要移动资金时发生效果。

2、在今天的比特币上,你没有方法预先装备或许说指定你的钱币的搬运途径,也无法在确定一笔资金时束缚该笔资金的取款速度(除非你运用根据 PSBT(待签名的比特币买卖)的非常规作业流程,但这既无法很好地处理买卖手续费,也无法在决定不再运用时可靠地删除、阻止广播)。这种简洁性,虽说是比特币的安全模型的核心,仍是给 Script 这种脚本言语支撑(哪怕是根本的)智能合约的才干带来了明显的束缚性。线性履行方式。

线性履行方式

1、Bitcoin Script 的束缚性之一在于其操作方式:操作码是按顺序履行的,并且没有循环。

以这个 P2PKH 买卖为例,你能够看出,脚本是线性履行的:仿制公钥、将公钥哈希成一个地址、验证该哈希值与确定脚本一致,最后用这个公钥来查看买卖签名。缺少循环,意味着脚本不是图灵完备的、确保能终止运转,避免了或许会导致节点宕机或明显拖慢整个网络的无限循环操作。尽管这种规划选择让资源的消耗量是静态受限的,它也束缚了 Script 办理杂乱作业流的才干。

2.缺少根本的算术Bitcoin Script 只要不到 100 个重要的操作码,有时分会令人吃惊:它不能乘、除,也不能组合仓库中的目标。许多对 OP_CAT 感兴趣的用户或许知道,中本聪在 2010 年禁用了比特币的多个操作码,包含 OP_OR、OP_MUL(乘法)、OP_DIV(除法)以及 OP_CAT(字符串拼接)等。这些被禁用的操作码被移除了,由于它们的原本完成有可被爆破的缝隙,或许会献身网络的安全性。但缺少这些操作码使得 Script 难以完成根本的数学运算,这在一些简略的场景中是有用的,比方,核算一个合约中的买卖手续费。

3.买卖数据不可见浅薄地说,我以为绝大多数人都假设比特币的智能合约能够看到买卖的数额以及其他部分的数据,由于这些信息在区块链上是公开可见的。但实情正好相反,比特币中的合约无法设置根据买卖数据的花费条件,由于 Bitcoin Script 了解买卖数据的才干是非常有限的。假如脚本有才干内省买卖数据中的更多细节,咱们就能够开宣布强健得多的智能合约,它能够做到一切风趣的实情,比方强制履行某一个花费条件、创立分阶段履行的买卖,以及启用更高级的安全保管特性(比方 “保险柜合约(vault)”)。

4.那么咱们要怎么做呢?Bitcoin Script 上的更前卫的实验,例如 Simplicity 言语及其它,致力于供给代替仓库方式束缚的计划。而 OP_MULTISHA256、OP_LESS 和 OP_LE32TOLE64 这样的操作码,则旨在晋级比特币的运算才干。OP_CTV 和 OP_CAT 这样的处理内省操作码的提议,则被归类为 “束缚条款”。那么,“智能合约” 与 “束缚条款”,到底有何差异?

5.智能合约 vs. 束缚条款智能合约是自履行(self-executing)的买卖,无需中介就能搬运资金。在今天的比特币上,智能合束缚缚在运用 Bitcoin Script 确定和解锁比特币的操作上。束缚条款旨在经过答使用户控制自己的资金在未来的买卖中怎么花费,来强化比特币的智能合约功用。假如答应 Script 内省买卖数据,咱们就在实质上答应了这些数据被用在合约逻辑中。这里列举几个为束缚条款功用而提议的更风趣的内省操作码:

OP_TXHASH:供给买卖的输入(或输出)的哈希值,并给予 Script 根据买卖数据来验证和强制履行条件的才干。
OP_CSFS + OP_CAT:这两种操作码答应脚本查看对任意数据(而不只是是对买卖本身)的签名。这意味着,Script 能够验证根据买卖数据和外部信息的条件,这就拓宽了在比特币脚本内的验证操作的或许性。
这两种操作码是有意望宽泛方向规划的,所以能够支撑杂乱的验证流程以及内省才干。还有一些则是有意窄化的,规划成了更束缚的束缚条款。

OP_CHECKTEMPLATEVERIFY(CTV):答应买卖的输出嵌入后续一笔花费买卖的模板,启用了更拘束的束缚条款。
OP_VAULT:启用了一种专门用于保险柜合约的束缚条款,让用户能够指定买卖的目的地、但在时延结束之前不会真正移动资金。

还有便是 OP_CAT,它不是直接启用内省才干的操作码……OP_CAT:答应 Script 将仓库中的两个元素前后拼接,能够用来组合脚本中的信息碎片。

OP_CAT:释放一切或许在 Bitcoin Script 中,只要三种首要的操作码能够内省买卖数据:CHECKLOCKTIMEVERIFY(肯定时刻锁)、

CHECKSEQUENCEVERIFY(相对时刻锁)以及 CHECKSIG(查看签名)。

此外,它们还有一些变体,比方:CHECKSIGVERIFY、CHECKSIGADD、CHECKMULTISIG 和 CHECKMULTISIGVERIFY,本质上都是 CHECKSIG 的微型变体;前面两种让你能够看出查看是否能经过,只供给了非常狭隘的功用。CHECKSIG 是相似的,差异在于你能够从仓库中抓取签名和公钥。

以前,咱们将 concatenation 了解成拼接两个元素的函数,但咱们也能够运用它来切割一个元素 —— 将签名切割成 (r, s) 对。

怎么能从 OP_CAT(拼接) 中派生出 OP_SPLIT(切割)功用呢?“假如你有一些大体积的目标,你能够将它们分红两半,方法是要求用户在花费是供给这两段碎片。你能够 CAT 这两段碎片,再查看持平。每一种操作都能够用这种方法反转。运用 CAT,你就能够将签名分红两半。”

这到底是怎么回事?用户先供给签名、公钥和被签名的买卖,你能够将签名分红两半,然后用买卖数据别离查看每一部分。这种技术能够视为一种切割,也能够视为一种拼接,由于它验证的是签名和公钥是一笔有用买卖的一部分。(译者注:此处的 “能够将数据分红两半” 指的并不是能够在脚本的运转中将一段数据拆成两段,而是将两段数据作为见证数据别离传入,然后用 CAT 将它们拼接起来,再运转原本要对完整数据运转的查看。有了这种方法,咱们就能够在传入两段数据的时分先对它们进行额外的查看。)这跟内省又有什么关系呢?“在 Taproot 中,咱们已经有了 Schnorr 签名。运用 OP_CAT 和 Schnorr 签名验证操作码,经证明,咱们能够得到一种非递归的束缚条款:你能够确确实实得到一条买卖的哈希值。不是被胡乱涂画过的买卖哈希值哦,便是仓库中一切买卖数据的 SHA2 哈希值。”

怎么获得仓库中剩下的买卖输入或输出的 SHA2 哈希值。咱们会跳过这些魔幻的数学,但启示就在于:运用 OP_CAT,咱们将对买卖的某些部分的束缚,作为解锁脚本的要求。咱们能够束缚发送者的地址,或买卖要发送的数额,而买卖的哈希值将作为解锁资金的钥匙。

保险柜

运用相同的技巧,咱们就有了买卖内省才干,并且立刻给咱们一种根本的保险柜合约。沿着 Poelstra 在文章中的推理,一位名为 Rijndael 的开发者证明了咱们只需 OP_CAT 就能够完成Purrfect Vaults(“完美的保险柜”)。
用户能够指定资金下一步要前往的地址,这供给了在密钥走漏时恢复资金的机制,减少了盗窃私钥的激励。

脚本内的默克尔树

在今天的比特币上,“默克尔树” 这种数据结构用于数据验证、同步,以及一定意义上 “绑定” 买卖和区块。而 OP_CAT 能够拼接仓库中的两个变量,当它跟公钥的 SHA256 哈希值一起运用的时分,就能够在脚本中完成一种直接的默克尔树验证程序。这种方法,开始由 Pieter Wuille 在 2015 年提出,已经在Liquid中完成。

树型签名

供给了一种多签名脚本,其大小与公钥的数量呈对数关系,并且能够编码 n-of-m 以外的花费条件。举个比方,小于 1 KB 的买卖,能够支撑拥有 1000 个公钥的树形签名。它也打开了逻辑泛化的花费条件。

递归型限制条款

假如你能够解读一笔买卖并对其特定部分施加束缚,你就能够建立能在多笔条件中连续的条件,也便是发明继续束缚的链条。这个概念就叫 “递归型束缚条款”。

OP_CAT 是一个独特的协议,由于它用只是 10 行代码给了咱们强大的力气。它能够解决咱们在前面说到的一切束缚性:买卖数据可见性、更好的数学功用,以及线性的履行方式。尽管 OP_CAT 乍看起来平平无奇,它解锁了巨大的潜能,能够被发明性使用。它还能够作为一个砖石,在本文讨论范围之外的更多功用上发挥效果,比方抗量子核算的 Lamport 签名。

它安全吗?

在 OP_CAT 开始被移除之前,结合 OP_DUP(仿制仓库),即使仓库中开始被操作的目标只要 1 字节,经过反复运用这一对操作码,仓库目标的体积也会迅速胀大,直至挤爆内存。这能够用作一种 DoS 攻击。新提议经过对仓库元素施加 520 字节的束缚,轻松地避免了这种攻击。

是否有发明出无限运转的合约的危险?

假如这个问题的意思是,OP_CAT 改变脚本的线性履行方式是否意味着脚本不再能静态地束缚其资源运用量(使之成为脚本体积的一个线性函数),那么答案是否定的。

束缚条款会在比特币上带来一个发行其它币的商场吗?

假如咱们有了递归型束缚条款,那么技术上来说,你能够开宣布杂乱的 2 层使用,包含 NFT、去中心化买卖所、电子猫,等等。可是,要想做出来并不简单。难以看出这会形成一个可观的商场。

你能够运用 CAT 永久 “玷污” 一笔钱吗?

在染色币和 NFT 的事例中,发行资产实践上会 “烧掉” 一聪,符号它以象征 “layer-2” 资产的一切权。这个进程是所谓的 “玷污”。但只要一笔钱的一切者才干符号他的钱,并且比特币的钱包也不能了解这一切(除非开发者加入了额外的代码来启用这个功用)。最终得到的钱币也不会被比特币钱包承受。或许它们能被电子猫钱包或许其他什么东西承受,但它跟绝大多数比特币用户无关。

它会给比特币带来 MEV 问题吗?

比特币与以太坊的一个要害差异在于买卖的可见性。不像以太坊,比特币中的合约并非一切方面都必定是透明的,因而比特币矿工并不具有跟以太坊矿工相同的看到合约内部状态并抢先履行某些操作的才干。

对 OP_CAT 的首要顾忌是在它或许影响经济激励,形成 “矿工可抽取价值(MEV)”。我的上一篇文章翔实地讨论了这个主题。许多用户忧虑的是,假如咱们让 2 层合约在技术上变得或许,MEV 就不可避免会到来。

但真是这样的吗?具体来说,假如你能够在比特币上发行 2 层币,是否就意味着它们一定会被采用?你能够想象能开宣布简略的互换合约,或许相对低效的 NFT,但开发带有自动化做市商的去中心化买卖所这么杂乱的东西就简直不或许做到;并且,尽管 “技术上可行”,咱们在 Liquid 上从未看到这样的东西被开宣布来。

OP_CAT 是相对完美的吗?

一部分比特币人,能够叫做 “固化主义者”,支撑让比特币坚持当前的状态,对任何协议晋级都抱有置疑情绪。他们尤为忧虑重大的改变,比方束缚条款的引入,或许会降低网络的去中心化。他们的建议根据一种信仰:最好仍是坚持比特币开始的愿景。

讽刺的地方是,OP_CAT 便是开始的比特币的一部分,这就导向了完全相反的定见。一些人以为,让 OP_CAT 回归,更符合中本聪开始的愿景。

假如你期望得到一些由递归型束缚条款带来的安全保管特性,那么 OP_CAT 便是好东西,但肯定不如老练的 Lisp 式脚本言语那么好。问题在于,引入这样的东西将是巨大的改变,并且不太或许很快获得欢迎。又或许,或许你站在另一边,你更喜欢非递归型束缚条款(比方 OP_CTV 和 OP_VAULT)的简洁性。

非递归型束缚条款更简略,也更简单剖析,没有发明不受控制的束缚链条的危险。但假如某种方式的递归型束缚条款一定会呈现呢?过去几年中,开发者们已经注意到,简直任何对买卖验证逻辑的拓宽都能够用来模仿 OP_CAT 的功用。在 Script 的宇宙中,根据仓库元素的体积,能够划分出两个国际。关于大于 4 字节的元素,你能够查看持平、将它们解读成公钥或签名,还能够哈希它们。而关于小于等于 4 字节的元素,你能够在上面作运算。运用一个运转在一个 BitVM 上的RISC-V处理器,你能够作任何事情。任何答应你模仿 OP_CAT 功用(分拆仓库元素或将它们拼接)的东西,都能够将这两个国际融合,从而答应你在脚本中 “做任何事情”。

一些研究员,比方 Andrew Poelstra ,预期咱们能够用非常少量的新操作码来制作递归型束缚条款。假如这是真的,那就有理由找出一种尽或许好的方法。OP_CAT 是最有或许经过的束缚条款提议吗?
OP_CAT 在束缚条款争辩中依然是一个强有力的竞争者。OP_CAT 不是最高雅的工具,但它的 功用/杂乱性 之比是最高的,这将答应开发者发明一些惊人的新特性。对BTC的未来多了更多的或许性。

此时快讯

【昨日GBTC无资金流入或流出,ETHE净流出950万美元】金色财经报道,据Farside Investors监测,截至发稿时,美国现货比特币ETF和现货以太坊ETF(8月26日)数据如下:
现货比特币ETF:EZBC净流入550万美元;GBTC、BTC、ARKB无资金流入或流出。
现货以太坊ETF:ETHE净流出950万美元;EZET净流出100万美元;CETH、ETH无资金流入或流出。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注