作者:Cookie

过去半个月,OP_NET 与 Arch 这两个比特币主网上的智能合约实现方案引发了较多的讨论。有意思的事情是,OP_NET 这个名字与大家熟悉的 OP_CAT 很像,都以「OP_」开头,具有很强的、让大家认为这哥俩差不多的迷惑性。

所以,在开篇要和大家先提一嘴 OP_CAT。首先,OP_CAT 是比特币操作码,从去年开始有以「量子猫」Quantum Cats,也就是「大巫师」Taproot Wizards 的创始人 Udi Wertheimer 为首的社区力量一直在呼喊要「复活」OP_CAT。说是「复活」,是因为 OP_CAT 是本就存在的比特币操作码,但中本聪在 2010 年将该操作码因可能导致潜在的 DoS 攻击的原因给去除了。CAT 是「concatenate」一词的缩写,如同这个词的意思,OP_CAT 的作用就是允许进行字符串的连接操作,将两个字符串拼接成一个。

那么这个操作码如何使比特币实现智能合约?讲真的这真的非常抽象难懂,因此在这里我推荐有兴趣的朋友阅读来自另一位律动作者 Jaleel 的文章(「13 行代码助力比特币实现智能合约?读懂 OP_CAT 软分叉」)。在这里我想为大家快速总结的几个要点是:

OP_CAT 涉及到比特币网络的软分叉,而要走到这一步,首先需要 BIP-347 提案通过,目前该提案仅进展到整个提案流程的第二阶段「Proposed」状态。

在 BCH 和 BSV 上的 OP_CAT 已经复活了几年有余,但是相关的用例还是非常抽象。在目前的讨论中,我们几乎看不到特别清晰直接的、到底用 OP_CAT 能做出一个什么样的 dApp 这种程度的案例。

OP_CAT 不是一步到位的「解药」,复活 OP_CAT 更像是解除比特币智能合约封印的第一步。合理的期待是,如果 OP_CAT 能够成功复活,一些优秀的用例出现,随后又会继续讨论解锁更多的比特币操作码。我们可以先期待在激活了 OP_CAT 的 Fractal 上会不会有令我们耳目一新的创新出现。

而 OP_NET 实际上应该归为符文、BRC-20、ARC-20 这些「协议」一类。虽然它的名字也有一个「OP_」,但其实现方式和比特币操作码完全没有关系。

OP_NET

OP_NET 的框架大体上可以分为两个部分,首先既然是比特币主网的智能合约实施方案,那么比特币主网一定在整个技术框架中占据了一部分。可以说,比特币主网在 OP_NET 的技术框架中扮演的角色是「行为发起层」与「最终确认层」。而智能合约的执行与状态确认则是另一部分,也就是 OP_VM 和 OP_NET 节点共同组成的「执行层」。

根据上面的技术框架图,我们可以简单地阐述 OP_NET 在比特币主网实现智能合约的流程。首先,部署 / 交互合约的用户从比特币主网发起交易,这笔交易的数据字段中会包含字符串「BSI」,使执行层能够嗅探到这是一笔 OP_NET 合约交互性质的交易。交易得到确认后,OP_VM 执行相应的合约操作并进行状态更新,交由 OP_NET 节点进行状态确认,最终将状态提供给比特币 dApp。而在比特币 dApp 拿到合约执行结果并进行相应动作后,也会将它们的动作结果提交到比特币主网上。

看到这里,您可能会有一种熟悉的感觉——这不又是链下索引器「链下执行、链上确认」那一套吗?确实有一丢丢相似。但是 OP_NET 有一个有意思的机制就是它实际上是「烧比特币」的。

OP_NET 的交易费用由两部分组成,第一部分自然是作为一笔比特币交易最基本的比特币网络费用,另一部分则是 OP_NET 交易费,而 OP_NET 交易费又由执行费和优先级费组成,这两部分费用都是用比特币来进行支付的。OP_NET 交易费必须多于 330 聪以确保不会被视为「粉尘」(过小的 UTXO)而被节点拒绝接收,优先级费则使合约执行动作可以像以太坊那样拉高 Gas 以确保自己的交易被优先执行(OP_VM 可以对优先执行哪个动作进行排序)。

如果 OP_NET 交易费用大于 0.0025 比特币,就会有 330 聪被「燃烧」,多出来的部分则给到节点运行者当作奖励。所谓「燃烧」,其实有点像以太坊经常出现的打到合约地址里的钱取不出来的那种情况,因为 OP_NET 实际上用了一种特定类型的比特币交易「Taproot 脚本路径支出」将比特币地址抽象成了合约地址,这个合约地址是任何人都无法控制的,因此也就起到了「燃烧」的效果。

最后,我们结合这个项目的背景对这个项目进行一个小观察。这个项目背后的团队是 MotoSwap 的团队,不知道大家还记不记得 BRC-20 行情时曾经在 BRC-20 Token 总市值排到第三的 $OSHI,OSHI 是做应用的,后来团队发生过一些分歧,有一部分就转去 CBRC-20 上做了 Moto。OP_NET 本身虽然使用比特币作为协议交互消耗的 Token,但是它还内置了 OP_20 和 OP_721 这两个标准,所以也可以说,这个项目方的风格更偏向去年我们所熟悉的那种「新协议、新资产」风格。

Arch

与 OP_NET 不同,Arch 已经宣布拿到了由 Multicoin Capital 领投,OKX、Portal Ventures、Big Brain Holdings、ABCDE 等参投的 700 万美元种子轮融资。Arch 会有自己的 Token,既作为 Gas 费,也作为其 PoS 网络验证者的质押 Token。

也因此,Arch 的定位和 OP_NET 完全不同。如果说 OP_NET 至少在短期内还是更偏向「新协议、新资产」风格,那么 Arch 则完全是「建造在比特币主网基础上的智能合约层」,或者说,「比特币 1.5 层」。

从上图我们可以大概地阐述 Arch 的工作流程。用户从比特币主网发起交易,Arch 节点嗅探交易并进行处理与验证,领导者节点则负责「区块事务」,即建立 Arch 网络的区块,另外还负责将最终确认的比特币交易提交回比特币主网。

看上去和 OP_NET 有点像?但其实如果仔细阅读 Arch 的官方文档,会发现他们在如何保证网络稳定性以及其它与「执行层」相关的技术阐述中要比 OP_NET 更详细一些。比如他们使用了「FROST + ROAST」的签名方案,使得 Arch 能够确保只要 51% 的网络成员诚实且合作,就可以签署签名来保证网络的稳健性。

最后,虽然 Arch 有自己的 Token 作为「执行层」也就是 Arch 网络的 Gas 费用,但是用户在通过 Arch 来进行合约交互的时候还是可以用比特币支付,费用转换会在后端进行。因此在使用上,Arch 不会出现需要另一套钱包这样的情况。

结语

OP_NET 与 Arch 技术实现上有一点点相似,总体上我们都可以说是把比特币主网当成了「发起端」与「确认层」,「执行层」则是他们自己。但这两个项目的定位却是风格迥异,前者是「协议」,后者是「比特币 1.5 层」。

当然了,比特币主网爆块时间过长的问题可能还是会限制二者发展出的 dApp 的效率,他们自身的执行和确认是足够快的,但是最终在比特币主网上的那个确认还是要看比特币主网的矿工们给不给力。尽管如此,我们都乐见比特币生态的不断探索,只有探索,才有发展。

最后值得注意的就是 Arch 的 Token 可能在明年的第一季度 TGE,因此如果未来推出相关的测试等活动,或是基于 Arch 推出的 dApp,大家有兴趣可以留心并且去交互。OP_NET 则没有什么好撸的,目前还是只能期待它上面跑出什么爆款 Token,但是现在整个生态的热度可能比较难支持 OP_NET 像过去 ARC-20 之类的协议一样跑出来。