我们来看看序数 NFT 的几个基本模块:
交易的见证数据字段:就是存放 NFT 的数据和内容的地方。
铭文:就是 NFT 的主体 —— 放到比特币区块链上的实际内容,NFT 代表的是对这些内容的所有权。铭文会刻在交易的输入的见证数据字段,而 NFT 就被赋予这笔交易的第一个输出的第一个聪。你也会看到人们把铭文称为 “电子艺术品/序数 NFT” —— 这三个词已经可以同义混用了。
信封:铭文会存放在(见证数据内的) Rodarmor 称为 “信封” 的区域,这个区域是由 OP_IF 和 OP_FALSE 操作码构成的。就像 OP_RETURN 一样,这些操作码是用来给比特币区块链发送指令的。在 “信封” 这种用法中,OP_IF 存放被铭刻的数据,而 OP_FALSE 则确保这些数据永远不会被实际执行 和推入堆栈(所以,虽然一些神教教徒在制造恐慌,但实际上,全节点并不需要处理和验证铭文,只需要处理和验证 UTXO 集,NFT 自在其中)。
序数:用数字排序的数学理论,在这里的用途是将单个单个的聪辨识为 “电子艺术品”(也就是 “序数 NFT”)。序数将一笔交易的第一个输出的第一个聪定义为 NFT;一旦标记之后,这个聪就可以像别的 NFT 那样转手和交易。
不像 Counterparty NFT(在链上的部分只有 80 字节),序数 NFT 没有体积限制,仅受交易见证数据字段的 4 MB 体积限制。所以,如果你的文件足够大,理论上你可以铸造一个序数 NFT,只用其铭文就将整个比特币区块塞满。
Taproot 升级带来的 tapscript,以及隔离见证升级带来的交易见证数据字段,让这一切可以组合起来。
在 2017 年隔离见证升级之后,比特币交易的签名就可以从 “脚本签名(ScriptSig)” 字段移到见证数据字段,而且这个字段中的数据不会被包含在区块的交易默克尔树中,而且是专门放在一个单独的区域中(这就是它的名字 “隔离见证(Segregated Witness)” 的由来)。
隔离见证实质上扩大了区块体积上限,因为包含在见证数据字段中的数据,都不会占用比特币原本为区块安排的 1 MB 空间。也正因此,隔离见证升级引入了一种新的度量区块体积的方法,叫做 “区块重量”,放在见证数据字段中的数据,会比放在原本的区块空间内的数据 “更轻”。所以在隔离见证交易的见证数据字段内存放数据,会比在区块内存放数据(译者注:比如 OP_RETURN 输出)更便宜。这就是所谓的 “见证数据折扣”,也是让序数 NFT 得以产生的关键。
另一个关键是 Taproot 升级。虽然引入了见证数据折扣,但隔离见证依然为单笔交易可以在见证数据字段放置的数据量安排了限制。Taproot 升级放宽了这些要求,完全移除了限制,所以理论上你可以用全部的区块空间(译者注:准确来说是见证数据空间)铭刻一个内容高达 4 MB 的 NFT。(我们 Luxor 真的付诸实践了,挖出了一个带有 3.9 MB 的电子艺术品的区块,这也是有史以来最大的区块)。
“附加铭文的交易是 taproot 输出的花费交易,会将相应的 tapscript 暴露出来,因此铭文的内容和文件类型也会暴露出来”,序数 NFT 的创始人 Casey Rodarmor 在一次手机访谈中说,“铭文会 ‘附着’ 在这样的交易的第一个输出的第一个聪上 …… 然后序数协议允许你使用普通的比特币交易转移这些聪。”
如比特币开发者 Peter Todd 指出的,序数 NFT 甚至在 2017 年 8 月隔离见证激活升级之前就可以实现。但 Taproot 让它们变得更加便宜,而且允许一次性上传更大体积的文件。一些评论员说 Rodarmor 是意外发现这项创新的,就像是偶然犯了个错。
“我不会称这是一场意外 —— 我觉得人们会为此感到惊喜”,Raodarmor 说。
比特币用户需要一种特殊的钱包和区块浏览器(Ord Wallet)来索引和跟踪序数 NFT,但可以使用任意的比特币地址来发送和接收这些 NFT。因为电子艺术品需要 taproot 才能铸造,所以 Ord Wallet 会默认启用 Taproot 地址。
还需要提醒的是:被附加了铭文的聪,从链上来看跟其它聪依然是没有分别的,意思是它就跟其它聪一样是可以花费的,而且花费方式也没有区别。现在,一个聪只能铭刻一次,但 Rodarmor 正在开发一种升级,让用户可以重新铭刻之前已经铭刻过的聪(叫做 “抄写”)。