Ajian:BRC-20 是对历史无知的产物
原文:Ajian
有关 Ordinals,区块空间以及 “BRC-20”,未被深思的问题 Ordinals (NFT)引发的潮流,至今仍在引起争议。一些人认为,向区块空间写入与任何一笔比特币的密码学安全都无关的数据,是有害的。而另一些人认为,推高对区块空间的需求可以让矿工获得更高的收入,而且可以为比特币带来新的社区。
在一开始,我认为,使用区块空间是一种无法有效审查的行为,而且写入不需要执行的数据难言有害。如今,我的想法更倾向于:可以,但没必要。
我们先来看看 Ordinals NFT(以及现在有人尝试的 FT)的模块:
(1)Ordinals 理论:所有的聪都可以根据其挖出的顺序赋予一个序号(比特币区块是单向增长的) ;
在交易(UTXO 的拆分与融合)中,可根据 “先进先出法” 来跟踪 UTXO 中的聪的流动,从而确保我们始终知道一个序号的聪的位置(UTXO)。
(2)Inscription(铭文):一种将一段任意数据跟某一个聪关联起来的办法。
通过在见证脚本中使用 0_PUSH OP_IF ... OP_ENDIF 这样的结构,在比特币区块的见证数据部分写入任意的数据(它们不会被执行)。根据协议的定义,这样被包裹起来的数据(NFT)就被附加到了该交易的第一个输出的第一个聪上。
好了,问题来了,有人能证明第二个模块(Inscription)是必要的吗?不凭此,就不能将 NFT “附加” 到某个聪上吗?显然不是的。
因为: 真正让一个 NFT 不能同时卖给两个人的机制 ,是第一个模块(Ordinals 理论),更具体来说,是比特币的一个 UTXO 不能被花两次的机制(抗重复花费)。
一个聪总在一个 UTXO 里面,而这个 UTXO 只能被能够解锁其锁定条件(不管这个条件有多复杂)的人花费,这即定义了资产的安全性、给出了资产安全转移的方法:卖出资产的人不能主张自己还持有这项资产,而买到资产的人可以向第三方证明自己拥有这项资产。至于这个资产怎么附加上去的,完全是次要的。
开发者 Anthony Towns 就探讨了保留 Ordinals 理论而去除 Inscription 的方法: 你只需要一种协议,创建一种链下的资产并将其与某个序数关联起来 —— 没有任何事情需要在链上发生。
比如,你可以创建一条 nostr 消息,给出一个 NFT 的创建者的公钥、NFT 的内容、它所在的位置(txid + 输出索引号 + 聪序号)及其产权转移的链条(每转移一次即增加一条位置消息),还有创建者的签名。 这完全不需要向区块链写入任何数据,但这样的 NFT 的买家的交易安全性依然是得到保障的。它有链条。
有人可能认为,这样的方法跟 Inscription 有一些区别:链上铭文自带时间戳,而链下铭文没有,所以它可以假装自己是很老的 NFT。这个问题很容易解决:可以要求 NFT 的创建和转移都必须在链上留下一条哈希值,从而获得时间戳和抗 “做旧” 性。 跟链上铭文相比, 链下铭文 有显著的技术优势:
1)链上铭文需要为所有的聪建立一个全局排序,即每一个携带 NFT 的聪都必须回溯其整个历史(到挖出它的那个区块)来获得其序号;而这种链下铭文则不需要,发行者自己用交易 ID 和输出定义了它的初始位置,从而无需回溯整个历史;
2)更加灵活。链下铭文在一开始就可以自定义附加到一个输出的第几个聪在 Ordinals NFT 刚刚起步的时候,一些朋友已经提到:这种方法非常局限,比如,没办法定义 “同类(收藏集合)”。其实可以,你可以硬写进去。但是,这又有什么意思呢?不论你使用什么方法来定义这样的集合,链下铭文都可以使用。 链下铭文一定会比链上铭文更灵活。
如果说 Ordinals NFT 是一种 “新” 尝试(实际上也不新),BRC-20 这样的东西就纯粹是对历史无知的产物了。 比特币上从未出现过可以发行 NFT、FT 的协议吗?没人记得 Counterparty 和 Omni(以前比特币上的 USDT 所用的协议)了是吗? BRC-20 和 Omni 在原理上非常接近 :
都是通过向比特币写入裸数据来发行资产并协助其转移。那为什么 Omni 后来几乎消失了?因为连目前看来体量最大的 FT 类别(稳定币),都发现了直接使用比特币区块链是一件极其吃力不讨好的事 —— 它非常慢。所以连 Omni 也走向了开发 Omni-BOLT,意在使基于自己发行的资产可以接入闪电网络。这才是未来。
如果你意识到了,所有这一切的根基,都在于比特币实现了一种抗重复花费的方法(它是一种安全的状态转换机制);为执行这种状态转换的单元(UTXO)定义(附加)状态并不需要写入链上数据;附身到 UTXO 可能比附身到聪更加灵活;链上只需要留下证据,但不需要留下裸数据;那么恭喜你:
你得到了一个简化版的 RGB 协议!