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