铭文的 pointer 字段:想落在哪个聪上,填的是一个零基序号 图 1
铭文的 pointer 字段:想落在哪个聪上,填的是一个零基序号 · 图 1

默认规则下,一条铭文会落在揭示交易输入的第一个聪上;手册的说法是”如果没有 pointer 字段,铭文在输入的第一个聪上铸造”。想在别的聪上落点,就得显式给一个指针。这个字段看起来简单,实际有三处细节会直接影响最终归属。

它是什么:一个零基序号

手册的定义是:要在输入的第一个聪之外的聪上做铭文,可以提供一个从零开始计数的整数,也就是”pointer”,标签是 tag 2;提供了它,铭文就会落在该笔 Inscription 交易输出中对应位置的那个聪上。注意计数从 0 起,填 0 与不填字段在结果上等价,填 255 指的是第 256 个聪。

铭文的 pointer 字段:想落在哪个聪上,填的是一个零基序号 图 2
铭文的 pointer 字段:想落在哪个聪上,填的是一个零基序号 · 图 2

越界会被忽略,而不是报错

pointer 的边界行为值得单独记住:如果这个值大于或等于该笔 Inscription 交易输出里的聪总数,字段会被忽略,铭文按常规方式铸造。也就是说,一个填错的指针不会让交易失败,而是悄悄退回默认落点。对手续费敏感的场景里,这种”静默回退”意味着你付出的定向成本可能完全没有生效,只能靠事后用索引器查位置来确认。

编码上,pointer 的值是小端整数,尾部的零会被忽略。手册举了两个例子:255 写成 OP_PUSH 0xff,256 写成 OP_PUSH 0x0001;同样的 256 如果带上尾部零写成 0x000100,仍然被读成 256。

用偶数标签的用意

手册解释得很直白:这里用偶数标签,是为了让老版本 ord 把这条铭文视为 unbound,而不是把它错误地分配到第一个聪上。结合字段表的奇偶分工(未识别的偶数字段必须显示为没有位置),可以读出一层设计倾向:与其让老软件给出一个错的归属,不如让它拒绝给出归属。

一笔交易里发多条铭文

pointer 最常见的实际用途,手册写得很清楚:它可以用于在同一笔交易中在不同的聪上创建多条铭文,否则这些铭文都会落在同一个聪上。要判断这种”一tx 多铭文”是否真的分散落点,可以按下面顺序自查:

1. 取揭示交易的 txid 与 vout 序号,看信封里 tag 2 的推送值
2. 按小端整数解析,忽略尾部零
3. 比较该值与输出聪总数:大于等于总数即为被忽略,落点回到默认
4. 用支持该字段的索引器复查每条铭文位置,确认没有挤在同一聪上

对买家的现实意义

在同一集合内挑铭文时,落点会影响后续转移与合并的成本:处在同一 UTXO 内不同位置的聪,转账时能否被一起搬走、是否需要单独拆包,取决于钱包对聪的排序与选择规则。指针字段本身不改变聪的稀有度,也不改变内容,只改变”归属被记录在哪一个聪上”这一件事。看到标价差异时,先确认它来自内容、编号还是落点,再谈其他。

指针的位置值还要和交易输出结构一起看。一笔 Inscription 交易的输出通常不止一个:承载揭示的那一笔、可能存在的找零,以及为多条铭文准备的其它输出。手册给出的读法是按输出里聪的总数与位置计算,因此同一段内容如果被钱包拆成不同的输出布局,落点结果就可能不同。要复现“为什么这条铭文落在这里”,需要同时保存揭示交易的 txid、输出结构与指针字段,只截一张页面截图是不够的。

另一个容易出错的地方,是把手指字段当成稀缺性标记。指针改变的是归属被记录在哪个聪上,不会改变内容字节、不会改变铭文编号,也不会改变那枚聪自身的属性。把某条铭文“用了指针”读成它更稀有,实际上混用了两件事情:落点是交易构造的产物,稀有度则取决于聪本身的编号规则。市场上如果因为这类字段差异出现明显价差,那属于卖家与买家的偏好,不是协议给出的分级。

最后一条属于成本层面。把铭文定向到某个聪,往往意味着交易要按指定顺序构造输入与输出,输出数量与体积都会影响手续费;而越界会被忽略这件事,又让这笔额外成本有可能完全落空。所以对批量铸造或频繁转手的持有者来说,值得养成的习惯是:先小额试一笔,用支持该字段的索引器读回实际落点,确认指针确实生效,再按同样的构造方式批量执行。这类验证只花一次交易的成本,却能避免在几十枚铭文上都出现同一种静默回退。

本文为机制说明,不构成任何投资建议。