一句话理解
ERC-721 里,一个合约通常对应一个系列,每张 NFT 都有全局唯一的编号。ERC-1155 换了个仓库结构:一个合约里同时存放很多“种类”,每个种类用一个编号标识,种类下面可以有很多完全相同、可以互相替换的单位。一把唯一的传说之剑和五千瓶一模一样的治疗药水,可以共存于同一个合约、用同一笔交易转走。这就是它常被叫作“半同质化”的原因——它同时容纳两种同质性。
结构差异
ERC-721 的核心状态是“每个编号对应哪个主人”,所有权以编号为键;ERC-1155 的核心状态是“某个地址在每个种类上有多少个”,所有权是地址乘种类的数量表。差异带来三个连锁后果:
- 转账语义不同:ERC-721 转的是“这一个”,ERC-1155 转的是“这种,多少个”。接收方安全检查(
onERC1155Received回调)也相应按种类批量询问。 - 批量操作:
safeBatchTransferFrom一笔交易处理多种代币多个数量。对游戏来说,一次领奖可能同时给一件装备加二十个材料,ERC-721 需要多笔交易,ERC-1155 一笔打包。 - 元数据按种类挂:URI 绑定在种类编号上,同种类的所有一般共享一份元数据(标准允许在数量为一时使用特殊 URI 逻辑,但这属于实现细节,采用不广)。
省 Gas 的原理与边界
批量转移省 Gas 主要省在固定开销的摊销:每笔交易都有签名验证、区块包含等基础成本,批量函数把这些成本在多种代币之间分摊,同时只写一个合约的状态。但它不改变“状态变化越多、写入成本越高”的基本规律——批量转账里每一种代币的余额变更仍要各自付费,只是均摊后总额通常更低。对铸造来说,一次发一万瓶药水的成本可以远低于一万次独立铸造,这正是游戏经济偏爱它的原因。
代价也要写在账本上:
- 单张辨识度靠约定。种类编号本身不带“第几号个体”的信息,若项目想区分同种类里的特殊单位(例如编号 1001 的第 7 瓶有彩蛋),需要在应用层自己设计,不同市场不一定识别。
- 版税表达较弱。ERC-2981 按种类查询收款人,部分实现忽略数量维度,市场对 ERC-1155 的版税与挂单支持普遍不如 ERC-721 顺滑。
- “同质单位”与代币的界限模糊。数量大、完全可替换的 ERC-1155 单位在功能上接近 ERC-20 代币,若项目把它当证券化资产运营,会面临与纯 NFT 不同的合规讨论——按具体司法辖区分析,这里不做判断。
哪些场景真的适合
游戏道具与消耗品是最典型的落点:多种类、多数量、高频批量流转。第二类是票务与兑换券:同场次的票本质是同质的,但入场核销、退改签需要按种类批量处理。纯收藏场景则通常仍选 ERC-721——买家要的是“这一张”的明确唯一性,跨市场兼容也更好。想了解单张标准的接收安全检查细节,可以读ERC-721 接收检查失败详解;跨标准对比的总览在ERC-721 与 1155 对比。
常见问答
问:ERC-1155 的 NFT 能不能在 OpenSea 类市场挂单?
主流市场多数支持浏览和交易 ERC-1155,但对数量大、同质单位的挂单体验差异明显:有的按“1 个单位”挂,有的支持改数量,版税显示也可能不完整。卖前先在目标市场实测一笔小额,不要假设 ERC-721 的体验可以平移。
问:同一合约里怎么区分唯一道具和普通材料?
标准没有为此规定专门字段。常见做法是把唯一道具的种类数量上限设为一、或额外实现铸造限制,让“数量上限为一”充当事实上的唯一性声明。但这只是惯例:真正的唯一性要看合约的铸造逻辑与链上历史,不能只看种类编号长得像。
问:一个合约装了上千种道具,读起来会不会很乱?
合约状态确实比 ERC-721 密集,但工具链通常按种类展开给你看。尽调重点放在三点:该种类的铸造上限与权限、有没有销毁函数(数量可变会稀释你的单位占比)、市场端对该种类的支持实测。种类编号与图片的对应关系建议在个人台账里留一份映射表,日后查历史更省事(参见记录管理)。
风险提示
本文为技术标准科普,不构成投资建议。半同质化代币的价值与流通性取决于项目实现与市场接受度,标准兼容不代表交易体验一致,操作前请以合约行为与平台规则为准。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。