比特币铭文(Inscriptions)的技术实质是什么,是在“聪”上面铭刻吗?比特币 L2 是怎么回事?比特币上可以构建生态吗?来扒一扒。
原文作者:MiddleX@PermaDAO
原文来源:everVision
最近,从 BRC20 到 ORC20,从“巫师”到“青蛙佩佩”,这些比特币生态的 meme 以涨服人,让市场彻底 FOMO 了。与此同时,除了 Ordinals 协议之外、已经被遗忘的比特币铭文协议 RGB 、还有各种比特币 L2 项目纷纷成了新的热门,也有一些新项目杀入其中,希望能参与 Build 比特币生态,从新叙事中分一杯羹。
比特币铭文(Inscriptions)的技术实质是什么,是在“聪”上面铭刻吗?比特币 L2 是怎么回事?比特币上可以构建生态吗?咱们来扒一扒。
什么是比特币“铭文”
比特币是一个去中心化的账本,记录着发生在其中的每一笔交易。每一笔交易在提交时,比特币网络除了基本的交易元数据之外,还允许提交一串自定义字符,可以理解为交易备注。这个交易备注字段曾经主要是“op_return”字段,在 Taproot 升级之后,也可以是交易 witness 字段。不管存在哪里,这部分是作为交易的一部分,存储在比特币链上的。
那在“聪”上铭刻是怎么一回事呢 ?其实 Ordinal 协议最早是用来发 NFT 的,在 mint Ordinal NFT 的过程中,你会获得 1 聪,这 1 聪的交易上铭刻了 NFT 的元数据,这样这 1 聪就和该 NFT 绑定起来了。如果你愿意支付更高的成本,你也可以铭刻 NFT 的完整数据,witness 字段最多支持铭刻 4M 的内容。
但请注意,比特币网络不会识别 Ordinals NFT 和聪的这种绑定关系,当你给别人转账这 1 聪的时候,比特币网络不会区分这是绑定了 NFT 的聪,还是普通的聪。这意味着,你可能在转账的时候,不小心把这个特殊聪支付掉。
众所周知,比特币的账本是 UTXO 模型,这是一种模拟物理现金的记账模型。每个人账户里放的不是比特币,而是一个一个的 UTXO,就像一张一张的纸钞。当你需要给别人支付时,如果你账户里有多张纸钞,你是可以选择用哪张纸钞的(自选 UTXO )。你可以用一张纸钞去支付一笔交易,也可以用多张纸钞组合支付一笔交易,如果你要支付的金额小于你手里的最小纸钞金额,你还可以将该钞票一分为二,一张支付给对方,一张支付给自己(这就是 UTXO 模型里常说的“找零”)。
大多数比特币钱包,并不会把支付时自选 UTXO 功能放在很显眼的位置,而是藏在高级设置里,钱包会默认按照自己定义的一套随机规则去自动选择使用哪个或哪几个 UTXO 来支付。
为了避免把特殊聪当做普通聪被错误的支付掉,需要“客户端验证”。如果钱包支持 Ordinals 协议,那么就会在支付时,避开特殊聪。如果你要转账这一个特殊聪,钱包也会提示你,你正在转账一个 NFT。也就是说,支持 Ordinals 协议的钱包客户端要负责维护和识别 NFT 与特殊聪的绑定关系。
RGB 和 Ordinals NFT 原理相同,都是靠客户端来验证 NFT 和聪的绑定关系。而这本质上是一种链下共识。
无论是 Oridnals NFT 还是 BRC20 代币本质上都是在比特币交易中铭文,而非在“聪”上铭文,只是 Ordinals NFT 会建立 NFT 与聪的绑定关系。BRC20代币则不同,不存在代币与聪的绑定关系。BRC20 代币是通过铭文的方式来实现部署、铸造、转账等操作。具体而言,通过在比特币交易中写入 jason 格式的状态转换数据来实现。如下图:
任何人都可以在比特币链上铭文,不一定要通过特定客户端。如果有人通过铭文 mint 已铸造完毕的 BRC20 代币,亦或者 transfer 自己本不拥有的 BRC20 代币。这笔 mint 或者 transfer 是无效的。但比特币链本身不处理这些代码,也不会验证 BRC20 代币的 mint、transfer 是否有效。
验证铭文有效性的工作是由支持 Ordinals 协议的钱包客户端或浏览器来完成的。
可以这么理解,Ordinals 协议实际上把比特币协议当硬盘,在比特币链上记录自己的账本,但对账本的解释规则是在本地,不在比特币链上。或者我们可以用模块化区块链的思路去理解:比特币链只是 BRC20 代币的数据可用性层(Data Accessiblity Layer),Ordinals 协议自身才是真正的共识层,这个逻辑和 Celestia 提出的 “主权 Rollup”的概念是很相似的。
BRC20 和 Ordinals NFT 的区别在于 Ordinals NFT 的转账不是通过铭文实现的,不需要 transfer 函数,只需要转移特定聪就相当于转账了对应的 NFT,这种结构是天然支持闪电网络的。BRC20 代币则不与聪绑定,通过铭文来记录转账信息,需要做特定的兼容性开发才能支持闪电网络。
无论是 Ordinals NFT 还是 BRC20 代币,尽管账本存在比特币上,但共识规则都是在链下的。所以“铭文”式代币并不完全与比特币共享安全性。
比特币链作为数据可用性层,并不会对铭文作任何验证,有效的铭文、无效的铭文都会提交上来,比特币链本身没有能力区分铭文是否有效。因此,比特币上尽管存储了Ordinals 协议的账本,但存储的是一个“脏账本”,所有有效数据都被存储在上面,但并非所有被存储的数据都有效。对于“脏账本”的过滤是通过“客户端验证”来完成的。
这个“过滤规则”,或者说对链上数据有效性的“解释规则”,才是 Ordinals 协议的本体。只有 Ordinals 协议所定义的这套规则本身有很强的社会共识时,“铭文”代币才是安全的。
Ordinals 协议目前只能用来发 Token,但如果 Ordinals 将铭文系统,也就是规则系统做的足够复杂的话,是可以用来做 DeFi 的,Ordinals 把规则的复杂性做到极致,甚至可以让自己图灵完备,可以实现任何合约逻辑。
但我不认为这是比特币生态!这只是Ordinals 生态。如果其他铭文系统,比如 RGB,也做了这样一套规则,那是 RGB 生态,而不是比特币生态。RGB 生态和 Ordinal 生态不互通,也不能依靠比特币提供互操作性。这种感觉就像,以太坊上的一个合约无法访问和调用另一个合约…
首先要定义一下L2,L2 是指将安全性依附于其他 L1 的链。比特币 L2 就是安全性依附于比特币的链,或者说比特币 L2 是与比特币共享安全性的链。
如果以这个标准来看,Rootstock、Liquid、Stack 都不是比特币的 L2,只能算是比特币的侧链。Stack 宣称在下一个版本的更新中会实现与比特币的共享安全性,但没有披露具体方案。
目前各种宣称是比特币 L2,事实上是侧链的项目提出的各种花里胡哨的方案都没有办法与比特币共享安全性,包括:
无效行为
想要与比特币共享安全性,并不是没有办法。我们可以试想,如果 Ordinals 协议不止在比特币链上通过铭文来存储账本数据,而是将 Ordinals 的整个定义数据有效性的规则(即 Ordinals 协议的源码)也放到比特币链上呢?
在这种情况下,尽管依旧需要通过“客户端验证”来实现一系列操作过程中的验证。但任何主体都可以通过写在链上的“规则”和脏账本,运行出一个干净的账本来,并得到一个一致的状态转换记录和最终状态。
这种形式并不是新事物,而是 Arweave 提出的存储共识范式—— SCP,这种方式适用于构建对互操作性要求不高,但对性能要求较高的重型应用。Arweave 积累多年,其上已经有 100+ SCP 应用。
如果要基于比特币去构建 SCP 应用,技术上是可行的,但经济上受到制约,只能构建形态较为简单的应用,因为频繁的在比特币上铭文不是一般的贵。
说了这么多,我并不是想彻底否定在比特币上构建各种服务的努力。我理解 PoW 支持者对以太坊升级的不满,也理解比特币矿工在减半预期之下寻求增收的需要,比特币网络当然可以通过铭文的方式去做一些 meme 代币和收藏品,但故事应该适可而止,不应该再去浪费时间在比特币上复刻以太坊生态(无论是“铭文”的方式,还是 L2 的方式),因为这并不能给整个 Web3 创造什么新的价值。
归根结底,在比特币上做生态,相当于以一个蹩脚且成本更高的方式在做以太坊本就可以做的事情,在比特币生态中,诞生不了什么新事物。我不否认围绕“比特币生态”概念的价格奇迹和造富神话可能会继续,但作为长期主义者,我更关注能创造实际价值,拓宽 Web3 使用场景、让 Web3 出圈的新叙事。