> For the complete documentation index, see [llms.txt](https://www.ordinalscn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.ordinalscn.org/xu-shu-li-lun-shou-ce/san-ming-wen.md).

# 三、铭文

铭文里可刻有任意内容，从而创造了比特币原生的数字人工制品，通常被称为 NFT。 铭文不需要侧链或单独的代币。

这些铭刻的聪，可以使用比特币交易传输发送到比特币地址，并保存在比特币 UTXO 中。 这些交易、地址和 UTXO 在所有方面都是正常的比特币交易、地址和 UTXO。除了为了发送单个聪，交易必须根据序数理论控制输入和输出的顺序和值。

铭文内容是基于万维网标准的。铭文由内容类型（也称为 MIME 类型）和内容本身（字节串）组成。 这允许从 Web 服务器返回铭文内容，并用于创建和使用HTML铭文并重新混合其他铭文内容。

铭文内容完全在链上，存储&#x5728;*`taproot script-path spend`*&#x811A;本中。 Taproot 脚本对其内容的限制很少，并且额外获得见证折扣，使得铭文内容存储相对经济。

*`taproot script-path spend`*&#x811A;本只能从现有的 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，允许它被转移、购买、出售、丢失和恢复。
