我用不同的语言直接实现了这些功能,并考虑到了1155的缺陷。比较721和1155的文章并不少,但是所有的文章都说1155有更好的效率,特别是批量转移/薄荷。我所看到的唯一抱怨是1155在市场上被采纳的较少(与我无关),还有一位NFT艺术家说1155的所有权更难追踪--没有详细说明。ER-1155合同用更少的汽油来制造代金券吗?
我的特别用途是一个无穷无尽的和可交易的域名风格的合同。目前还没有考虑到必须进行批量转让/薄荷糖,但这本身是允许的,因为否则它可能会被搞砸。什么时候721比1155更可取,而不是市场实施?
发布于 2022-05-13 07:58:58
1155的煤气节省来自没有跟踪一个额外的变量,在721可以通过'balanceOf‘访问。
如果您试图修改1155以使其不可替换,就像721 (如果您只创建某个id中的一个),那么您只有一个映射uint256 (id) =>地址(用户) => uint256 (余额),其中的余额要么是1,要么是0。
使用721,您可以通过映射uint256 (id) =>地址(所有者)跟踪所有权。还有第二个映射地址(用户) => uint256 (余额),在本例中,它跟踪用户拥有多少NFT。这使您可以方便地查询用户是否拥有某个集合的NFT (Collabland通过“balanceOf”查询此值,以便为用户提供一个成员角色)。因此,大多数情况下,它被用于验证过程(我知道使用这个链上的项目)。然而,这并不是绝对必要的,因为您可以始终提供一个您知道自己拥有的id (这也可以轻松地在链上验证),并且您可以提供一个O(N)实现(不能在链上调用,因为这将花费太多的气体),它只需遍历所有id并计算您拥有的数量。已经有多个ERC721实现在执行此操作(通过不跟踪第二个映射来节省气体)。
这个平衡变量在1155中不存在。这里的等价物是有一个变量来跟踪唯一的余额。
总之,1155不像721那样使用第二次映射来跟踪唯一的余额。这意味着每个传输都有较少的读/写。在1155年,它只有两个(所有权/余额从…,至),而在721年中只有3个(所有权,余额从…,balance至)。轻型版本的ERC721可以减少到一个变量(只有所有权),并且有一个O(N) balanceOf实现。
https://ethereum.stackexchange.com/questions/128132
复制相似问题