ERC721与ERC1155的区别 (详细)


1.同质与非同质

ERC-721:仅限于非同质

ERC-1155:允许同质和非同质,允许像半同质代币这样的新概念币,例如,同质代币可以“转化”为非同质代币,反之亦然。

2.批量传输

ERC-721:只支持每次传输一个代币

ERC-1155:支持在单个交易中批量传输多个代币ID。

(由于每个以太坊交易大约要15-30秒的时间,因此ERC-721需要花很长时间来传输代币,而ERC-1155可以在一个区块中发送数百个不同的代币。

优化的ERC-1155顺利通过测试,每秒可传输150-200个代币!)

3.智能合约单一,不造成数据浪费

ERC-721:要求为每种新型代币部署一个新的智能合约(例如,创建一个CryptoKitties的合约,再另外创建一个CryptoCuties的合约等)

ERC-1155:一个智能合约可容纳无数类型的代币。

注:无法将ERC-1155锁定在不支持ERC-1155的合约中。

只能将代币发送给符合ERC-1155的合约!从而防止意外的代币丢失。如果收件人拒收ERC-1155代币,系统会立即恢复你的代币。

ERC-721试图实现ERC-1155的功能,但无疾而终,ERC-721的标准中包含了遗留的“不安全”函数。如果钱包转账不安全,你有可能永远丢失自己的代币。

4.发送代币触发智能合约

向智能合约发送ERC-1155代币可触发区块链上的一系列函数和事件。例如,交易所允许用户直接发送代币,自动瞬时地在链上交换其他代币。

由于这些代币严格遵循“onERC1155Received”规则,因此ERC-1155百分百可靠。

但无法用这种方法发送ERC-721代币,因为如果钱包不能安全发送代币到交易所,用户将遭受损失。

这意味着dapp无法依赖于ERC-721接收器正常工作。由于ERC-721不可靠,无法创建这些应用。

5.本地化

ERC-721:只支持一种语言

ERC-1155:支持将所有元数据(例如代币名称、说明、甚至代币图像)语言本地化,使所有代币都通用。

6.遗留元数据

ERC-721:保留了像“symbol”和“name”这样的遗留元数据,但这对于许多现代代币来说是不必要的。

ERC-1155:将所有元数据保存到web或IPFS上的URI(“统一资源标识符”的简称)中。

7.ID替换

ERC-721:由于只支持静态元数据,因此每个代币ID必须由智能合约存储和管理其元数据URI。

ERC-1155:合约可以指向无数的代币URI,无需在链上存储任何额外的数据。甚至可以用来指向一个web服务,该服务为数据库中的每个代币动态生成代币JSON。

8.丰富事件日志

ERC-721:可发出转移和批准事件。

ERC-1155:可发送铸币、销毁、传输、批准和更改元数据的标准事件。使生态系统受益,例如深度分析代币和代币浏览器。