Home指南API 参考手册
指南API 参考手册社区Discord博客FAQ漏洞赏金公告中心English(英文版)Log In
指南

TRC-1155

TRC-1155 是波场 TRON 的代币标准之一,它可以同时表示和管理多种代币,包括同质化代币 (TRC-20)、非同质化代币 (TRC-721) 以及半同质化代币 (Semi-fungible tokens),并支持批量处理操作。

TRC-1155 本质上是 TRC-20 和 TRC-721 标准的结合。除了具备 TRC-20 和 TRC-721 的所有功能外,它还汲取了这两个标准的优点,使其自身更加高效。TRC-1155 的主要目的是在同一个合约中同时发行多个同质化代币、多个非同质化代币 (NFT),或两者的组合。

随着元宇宙概念的兴起,区块链游戏对资产生成和处理速度提出了更高的要求。TRC-1155 标准可以为基于波场网络的游戏开发和运营提供极大帮助,特别是在同质化和非同质化代币的生成与处理方面。例如,一款游戏可能需要同质化代币(如金币或游戏币)和非同质化代币(如收藏品或道具),开发者可以基于 TRC-1155 标准创建这两类代币并确保它们的互操作性,从而让玩家能够用单个或多个游戏道具兑换金币,反之亦然。因此,该标准可以大幅提高开发效率并降低使用成本。

TRC-1155 的功能与特性

TRC-1155 具有以下功能和特性:

  • 同时支持同质化与非同质化代币

    针对这一特性,与 TRC-20 和 TRC-721 相比,TRC-1155 具有以下优势:

    首先,由于每个 TRC-20 代币都需要部署一个合约,且大多数代币的合约代码几乎相同,而单个 TRC-1155 合约即可表示和管理多种同质化与非同质化代币,因此 TRC-1155 标准可以极大地减少链上空间冗余。

    其次,虽然一个 TRC-721 合约可以包含多个 NFT,但它们实际上共享相同的配置。而 TRC-1155 合约可以为每个 NFT 配置不同的属性,例如元数据 (Metadata)、供应量 (Supply) 及其他属性。

    当供应量仅为 1 时,该代币本质上就是 NFT。此外,您可以定义一个可供客户端读取和修改的元数据 URL。

  • 批量转账 除了单代币转账,TRC-1155 还具有批量转账功能。safeBatchTransferFrom 可以同时将多个不同的代币转账至一个地址,这极大地节省了资源消耗。

  • 批量授权 与 TRC-20 不同,TRC-1155 不会对单一类型下特定数量的代币进行授权,而是一次性授权 TRC-1155 合约管理的所有代币。它不支持单代币授权,也无法指定授权的代币数量。通过 setApprovalForAll 接口,您可以简单地对一个账户进行授权或取消授权。

  • 批量余额查询 除了单代币余额查询,TRC-1155 还具有批量查询功能。balanceOfBatch 可以同时查询多个账户的多个代币余额。

  • 钩子函数 (Hooks)

    由于 TRC-1155 支持 TIP-165 规范,如果智能合约想要接收 TRC-1155 代币,则必须实现以下 TRC-1155 接收钩子,且该钩子函数必须返回预定义的 4 字节值。详见 TRC1155 代币接收器 (TRC1155 Token Receiver) 章节。

    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 代币需要转账至合约时,将调用该钩子函数。如果返回了正确的值,则合约可以正常接收 TRC-1155 代币并知晓如何处理。接收钩子是实现安全转账的关键点。

注意:为了与以太坊完全兼容并方便开发者进行代码迁移,TRC1155TokenReceiver 中定义的接口与以太坊的 ERC1155TokenReceiver 保持一致。

安全转账规则 TRC-1155 标准在每个接口中都定义了安全转账规范。详情请参考 TRC-1155 规范