TRC-1155

TRC-1155 是 TRON 上的多 Token 标准:单个合约可以管理同质化 Token、非同质化 Token 和半同质化 Token, 并支持批量转账和批量授权。

📘

前置阅读

TRC-1155 是 TRON 上的多 Token 标准。单个合约可同时表示并管理多种 Token——同质化(类似 TRC-20)、非同质化(类似 TRC-721)、半同质化,并支持转账、授权、余额查询的批量操作。

TRC-1155 在接口层与 ERC-1155 兼容,包括接收者钩子选择器。ERC-1155 合约移植到 TRON 时不需要修改接收者钩子的返回值——详见下方兼容性说明。

选型:TRC-1155 vs TRC-20 / TRC-721

场景选项
单一同质化 Token(USDT、治理 Token、功能 Token)TRC-20
每个 Token 都唯一的 NFT 系列TRC-721
部分道具唯一、部分可堆叠的游戏道具TRC-1155
单一项目发行的多种同质化 TokenTRC-1155
减少多种相似 Token 类型造成的链上冗余TRC-1155

关键特性

单合约多 Token 类型

一个 TRC-1155 合约可持有多种 Token 类型,按 id 区分。相比为每种同质化 Token 各部署一份 TRC-20 合约,链上空间占用显著降低。相比 TRC-721(系列内每个 NFT 共享同一份配置),TRC-1155 允许每个 id 拥有独立的元数据、供应量与属性。

某个 id 的供应量为 1 时,这枚 Token 在效果上就是一个 NFT。

批量转账

除单 Token 的 safeTransferFrom 外,TRC-1155 提供 safeBatchTransferFrom:单次调用把多种不同 Token 转到同一目标地址,显著节省资源。

批量授权

TRC-1155 不像 TRC-20 那样按数值授权额度,而是采用“全量授权”模式:调用 setApprovalForAll(operator, true|false),即可授予或撤销操作员(Operator)管理调用方在本合约内全部 Token 的权限。

批量余额查询

balanceOfBatch 在单次调用中查询多个账户的多种 Token 余额。

接收钩子

接收 TRC-1155 Token 的合约必须实现 TRC1155TokenReceiver 接口,钩子函数必须返回预定义的 4 字节选择器。参见 TRC-1155 接收钩子

interface TRC1155TokenReceiver {
  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _value, bytes calldata _data) external returns (bytes4);
  function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external returns (bytes4);
}

TRC-1155 Token 被转账到合约时,会调用匹配的钩子函数。钩子返回正确的值,合约才正常接收 Token,否则转账 revert——这正是安全转账“安全”的来源。

📘

ERC-1155 兼容性

TRC-1155 使用与以太坊 ERC-1155 相同的钩子函数名称和选择器:onERC1155Received 返回 0xf23a6e61onERC1155BatchReceived 返回 0xbc197c81这与 TRC-721 不同,TRC-721 使用 TRON 特有的接收者钩子选择器。ERC-1155 合约可以移植到 TRON 而无需更改接收者钩子实现。

安全转账规则

TRC-1155 标准为每个接口定义了安全转账要求。完整规范请参见 TIP-1155


本节内容

相关资源