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 |
| 单一项目发行的多种同质化 Token | TRC-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返回0xf23a6e61,onERC1155BatchReceived返回0xbc197c81。这与 TRC-721 不同,TRC-721 使用 TRON 特有的接收者钩子选择器。ERC-1155 合约可以移植到 TRON 而无需更改接收者钩子实现。
安全转账规则
TRC-1155 标准为每个接口定义了安全转账要求。完整规范请参见 TIP-1155。
本节内容
- TRC-1155 协议接口 —— 完整函数与事件参考
相关资源
- Token 标准概览
- TRC-20 —— 仅同质化 Token 合约
- TRC-721 —— 仅 NFT 合约
Updated 26 days ago