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 规范。
Updated 5 days ago