三、铭文

铭文里可刻有任意内容,从而创造了比特币原生的数字人工制品,通常被称为 NFT。 铭文不需要侧链或单独的代币。
这些铭刻的聪,可以使用比特币交易传输发送到比特币地址,并保存在比特币 UTXO 中。 这些交易、地址和 UTXO 在所有方面都是正常的比特币交易、地址和 UTXO。除了为了发送单个聪,交易必须根据序数理论控制输入和输出的顺序和值。
铭文内容是基于万维网标准的。铭文由内容类型(也称为 MIME 类型)和内容本身(字节串)组成。 这允许从 Web 服务器返回铭文内容,并用于创建和使用HTML铭文并重新混合其他铭文内容。
铭文内容完全在链上,存储在taproot script-path spend脚本中。 Taproot 脚本对其内容的限制很少,并且额外获得见证折扣,使得铭文内容存储相对经济。
taproot script-path spend脚本只能从现有的 taproot 输出中产生,因此使用两阶段commit/reveal过程进行铭文。 首先,在commit中,创建一个提交到包含铭文内容的脚本的taproot 输出。 其次,在reveal交易中,使用commit交易产生的输出,来显示链上的铭文内容。
铭文内容使用未执行条件中的数据推送进行序列化,称为“信封”。 信封由 OP_FALSE OP_IF … OP_ENDIF 组成,包装任意数量的数据推送。 因为信封实际上是空操作,所以它们不会改变包含它们的脚本的语义,并且可以与任何其他锁定脚本结合使用。
包含字符串“Hello, world!”的文本铭文 序列化如下:
OP_FALSE
OP_IF
OP_PUSH "ord"
OP_1
OP_PUSH "text/plain;charset=utf-8"
OP_0
OP_PUSH "Hello, world!"
OP_ENDIF
首先字符串 ord 被push,以消除铭文与信封其他用途的歧义。
OP_1 表示下一次推送包含内容类型 OP_0 表示后续数据推送包含内容本身 大型铭文必须使用多次数据推送,因为 taproot 的少数限制之一是单个数据推送不得大于 520 字节。
铭文内容包含在reveal交易的输入中,并且铭文是铭刻在其第一个输出的第一个聪(Satoshi)上。 我们可以使用熟悉的序数理论规则来跟踪这个聪 sat,允许它被转移、购买、出售、丢失和恢复。