ERC1155 解释

原创
2021/06/25 16:20
阅读数 143

看了一下 ERC1155 做一些记录。

ERC1155 标准。

ERC1155 的官方标准定义,在https://eips.ethereum.org/EIPS/eip-1155 地址。这个标准定义了一些接口,并且说明了每个接口是干什么用的(实际上就是定义了币的Transfer、Approval、balance、Metadata 的操作接口)。

ERC1155 的实现。

OpenZeppelin 实现的ERC1155: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol
官方推荐的参考enjin的实现: http://github.com/enjin/erc-1155

这里以OpenZeppelin 的实现 简单说一下:

实现的合约中,包含3个属性。


这就是 ERC1155 在 openzeppelin 中给出的实现,就3个属性。 _balances、_operatorApprovals、_uri。

  • _balances 表示 :某个币种的ID --> (某个账号--> 有多少数量)
  • _operatorApprovals 表示 :某个地址 是否允许 另一个地址 操作自己的币。
  • _uri 表示:某个ID的币的元数据地址是 https://token-cdn-domain/{id}.json
// Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json
    string private _uri;

怎么创建币。

有mint 权限的人,直接任意加_balances就行 (币种id外部传递、地址外部传递、数量外部传递)。具体某个币的元数据(name、流通总量) 通过uri属性获取。
如果是自己实现,可以对mint操作设置其他限制。

ERC1155 核心。

ERC1155 最核心的是可以用一个合约表示多个代币种类,并且可以包含NFT 和非NFT。如下说明:
id是币的种类,可以对 uint256 类型的id进行拆分,前128位表示币的种类。如果是NFT后128位有值并且表示币的下标。如果不是NFT 后 128位是0。这就要求mint、查询代币余额balance的时候传递的参数id要按照这个规则进行。

总结:

核心思想就是实现ERC1155 标准就行,怎么实现,合约内部有什么属性定义。都是可以自己设置的。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部