TON 的压缩 NFT:TEP-126 用一棵默克尔树廉价发几万枚藏品 图 1
TON 的压缩 NFT:TEP-126 用一棵默克尔树廉价发几万枚藏品 · 图 1

TON 生态发大规模 NFT 的默认工具是一个叫 TEP-126 的标准,标题直译就是”压缩 NFT 标准”。它解决的问题官方写得很朴素:社区空投、营销活动这类场景需要一次性发出几万甚至几十万枚藏品,而 TON 的主体 NFT 标准 TEP-62 是”一枚代币一个合约”的结构——每个藏品都有自己的合约账户,批量发币会把链上账户数量推到不划算的规模。TEP-126 的答案是把默克尔树搬进发行流程:集合合约只存一个树根哈希,每枚代币是树上的一个叶子,领取时用户提交一小段证明,合约验证叶子属于这棵树,然后把属于这个领取者的内嵌 NFT 合约实例化出来。标准文本 2023 年 7 月 28 日创建,状态 Active,还给了参考合约与配套的领取 API 实现。

把机制拆开会得到一条清晰流水线。发行方先在链下把所有领取地址、附加参数等信息组成一棵默克尔树,只把根哈希写进集合合约部署参数——这一步是全部成本里的大头,但和发多少枚无关,几万枚的树和几百枚的树在链上同样只是一个哈希。随后发行方用增补消息(标准里叫 collection_add_reveal_batch)把新的内容批次持续加进奖池。用户一侧的动作是”claim”:本地构造一条带证明的消息发给集合合约,合约按 TON 的哈希检查路径逐层验证后,为这个用户创建一枚真正的内嵌 NFT 合约,代币从此进入逐币合约世界,日常转账、查询完全沿用 TEP-62。标准还允许把较大内容分段存放,证明通过时按引用取出。

这套结构和以太坊的默克尔空投气质相近,但差异点决定了体验。以太坊方案里”领取”是调用一个公共合约函数,签名或证明提交进同一个合约;TEP-126 里领取的直接结果是一枚新合约诞生——这也是为什么压缩 NFT 领完之后的那半分钟,钱包里会跳出一个新地址的资产。核对这类藏品有三个抓手。第一,树根哈希在集合合约的数据里可读,领之前它已经固定,理论上发行方无法在领取期间换内容池而不被发现;第二,get_item_data 这类只读方法加上领取者地址参数,可以拿到尚未领取叶子的元数据,钱包和市场靠它显示”你会领到什么”;第三,领取用的证明是本地生成的,任何要求你把私钥、助记词交给”领取工具”的网页都直接排除——证明机制存在的全部意义恰恰是不需要信任第三方。

要留意的边界也不少。压缩形态是发行阶段的形态:没领的代币不存在于链上任何地方,只存在于树根哈希的承诺里,所以”集合总量”这类信息以合约内已登记的批次为准,营销页吹的数字和链上登记的批次数量不是一回事。领取交易由用户自己付 gas,遇到链上拥堵时领取工具的重试逻辑可能造成重复提交,好在验证逻辑保证同一叶子只能成功实例化一次。最后,标准文档自己提醒:TEP-126 是 TEP-62 的扩展而非替代,一旦代币被领取出来,它就是一枚普通藏品,之前的压缩结构只留在发行史里。对研究者来说,这个标准是观察”账户模型链怎么把批量成本摊薄”的好样本:它没有发明新代币标准,只是用一棵树把无数个合约的创建推迟到了最需要的时刻。

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

TON 的压缩 NFT:TEP-126 用一棵默克尔树廉价发几万枚藏品 图 2
TON 的压缩 NFT:TEP-126 用一棵默克尔树廉价发几万枚藏品 · 图 2