# ERC1155是什么？以阿迪达斯NFT为例解析

By [Jason chen](https://paragraph.com/@jason-chen) · 2022-04-11

---

三大标准协议ERC20、ERC721（衍生ERC721A）和ERC1155，在之前的文章中已经为大家介绍并实战了前2个，但第三个1155一直没有遇到不错的例子来讲解，恰好昨天有朋友疑惑为什么阿迪达斯的NFT只有一个item却有3万人持有，研究了一下觉得是一个不错的例子，故写下本文来以此阐述什么是ERC1155。

我们先看一下阿迪达斯NFT是什么情况，opensea网址如下：[https://opensea.io/collection/adidasoriginals。](https://opensea.io/collection/adidasoriginals%E3%80%82)

我们进入后可以看到只有1个NFT，但却有2万余人持有它，这时候下意识你可能会猜测它是共享NFT？或是碎片化NFT吗？

![](https://storage.googleapis.com/papyrus_images/64ff2127d84bb15e435510605d0cc9b1bb733d827f8e8e68d02994871c8a24d6.png)

进入该NFT的详情页，我们可以看到共有21.7K人持有它。

![](https://storage.googleapis.com/papyrus_images/dad9bd6aae689d7d85a59f33f89c41cb61cd7742eacc45a9456e877f91a0b95d.png)

再往下可看到有很多持有者挂单，并且价格不一。

![](https://storage.googleapis.com/papyrus_images/73272a2543a96899b35e1f4e4f42dbe1e8a3fac88aad9c17c79855c53a1d9813.png)

我们点击购买，可以发现要求支付1.499ETH，即所有挂单价格的最低价。

![](https://storage.googleapis.com/papyrus_images/87ea7f1bf725c7cdf2d2e4fd1273ba9ba6dbf52c0be184680e53aada5942c4f5.png)

到这里你会感觉好像确实和平时常见的NFT看起来不一样，怪怪的。

然后我们再点击details看一下，Token Id是 0，众所周知大多数NFT的toklen id都是递增的，即我发行一万个NFT，ID应该是从0递增至一万的，但是阿迪达斯发行了3万个，按照常理应该有3万个NFT，且ID是递增至3万的，但为什么这里只有1个ID为0的NFT呢？

我们继续向下看，它的协议是ERC1155，猫腻可能是出在这里，大家也许会发现自己在opensea上传的NFT也用的是1155协议，这两者有什么关系吗？

![](https://storage.googleapis.com/papyrus_images/9c98f4b097853707811934630ad844df548ecc4c82db57e5f13ddfad1f7440de.png)

为什么阿迪达斯要用这样一个不常见的NFT协议，这里面一定是有原因的，所以我们继续顺藤摸瓜，我们看看阿迪达斯官网对于它的NFT的介绍。

阿迪达斯NFT共分为四个阶段，第1、2、3阶段都涉及到销毁兑换操作，第四个阶段会获得一个ERC721NFT。

![](https://storage.googleapis.com/papyrus_images/2f0506f7f4a4f5799cefb8f8715f4517f95754999d95e39e81b847eddd61a8a4.png)

那我们推演一下，阿迪达斯在下一盘大棋，通过游戏化的形式使用四个阶段的收集、销毁、兑换过程层层打怪，提升大家的参与度从而打出品牌影响力，所以这里的重点是“销毁”，如果3万人手里的NFT要被销毁，那意味着这些NFT工具属性非常强，不能有差异，从这个点来看常见的ERC721发行非同质化代币协议好像不太适用。

那ERC1155好像是比较适用的，我们先简单了解一下什么是ERC1155，然后再一起看阿迪达斯合约具体都做了一些什么事。

ERC1155相比于ERC721简而言之最大的区别就是它可以一个合约承载多类FT与NFT，可以将其理解为是ERC20和ERC721的融合加强版，想发行同质化和非同质化的代币1155全部搞定，而不用用多个合约承载再进行交互。

ERC721是一个合约承载1类NFT，1类NFT承载多个NFT，如无聊猿，它的合约有且仅能发行无聊猿这一套NFT，每个具体的NFT编号均不相同为递增，但是ERC1155一个合约可以发行多类NFT，它最常用的场景在游戏，比如一个游戏中，可能会有很多类装备如“武器”、“坐骑”、“药品”等，这些装备有的是非同质化的，比如屠龙宝刀只有1个，有的是同质化的比如药品都是一样的喝一瓶补10滴血，而传统的721只能发行一类实体，但是1155却可以发行多类，说起来还有点抽象是不是，直接上代码。

我们来演示一个最简单的1155协议合约，自上而下，我先创建了3种代币类型分别为武器wq、坐骑zj和宝石bs，他们的编号分别为0、1、2。

然后我定义这三类代币的发售最大数量分别为1、10和9999。

在mint函数中，传入三个参数分别为地址、代币编号和数量，依次校验当前用户要mint的代币类型数量是否超过了最大发售数，若未超过则执行mint操作，这里大家注意，相比721的mint这里的mint多传入了一个id，这个id即1155协议中定义的代币类型，同样的在校验的过程中用到了totalSupply相比如721多传入了id，也是因为有多个代币类型，所以需要用id来检索到底要获取的是哪一个代币类型的数量。

![](https://storage.googleapis.com/papyrus_images/bbd9346ce9172d21d87f9db591502cc04b6fcec09d9f2fb434b2dd761ca4d5dc.png)

我们执行mint操作，输入地址，mint编号为2的代币，mint100个出来，点击transcat执行。

![](https://storage.googleapis.com/papyrus_images/07d6689478154addc0a42a385f5541e1c93e28e4c9a75844e2687e025031f153.png)

可以看到我进行balanceOf查询编号为2的代币持有100个。

![](https://storage.googleapis.com/papyrus_images/84be58224f1beb37061223a69a16f173568818e18dc46c2c51290ab81d151619.png)

我也可以将我的代币转移给其他人，同样的需要定义转移的哪一类，以及转移多少个，这和常见的721都是不一样的。

![](https://storage.googleapis.com/papyrus_images/61328c5298b885a5cdfdb42fa72bc4decadbaaab87d218bb94e858ddb34030e8.png)

至此你已经明白了1155和721到底有什么区别，接下来我们看看阿迪达斯的合约代码，代码有点多我挑着重要的讲，不懂代码没关系请一定要耐心看下去，理解项目方到底做了什么事。

首先定义了最多发售3万个，白名单预售最多发售20380个，白名单每人最多mint1个，公售每人最多mint2个。

然后定义了预售、公售的开始和结束时间，这里使用的是时间戳定义。

最后定义了销毁窗口期的时间。

![](https://storage.googleapis.com/papyrus_images/ff0f67b9b8b15421f60bc811c5b2326b2fd86efcee2acb7f7c5c7151ef2a3454.png)

然后执行了构造函数，这里挺有意思项目方给自己一开始自动mint了380个。

![](https://storage.googleapis.com/papyrus_images/03548079fb834a1abc9ae07e71078537d59199aa740566dccf57fbf73277c515.png)

这里我们学以致用，把上篇文章教大家的阅读etherscan使用起来，我们查一下这个地址的情况。

挺穷的啊钱包里都没什么钱。

![](https://storage.googleapis.com/papyrus_images/6b3084fd49baa080eaeb20bd4f3ee6c7337d1e218e6f345e94dbdfd4a6b8869b.png)

再看一下他的交易记录，有大量的动辄几十上百的ETH流水，项目方自己mint+钱包里没钱+有大量大额交易记录，所以这个钱包可能是一个白手套。

![](https://storage.googleapis.com/papyrus_images/5e4fd3e278368f59e40d35d8d763c988dab779f6f0d971fe0a2d6e524d42018d.png)

继续看代码，这里到了mint函数，可见它目前只有1类代币所以自动传入了编号0。

![](https://storage.googleapis.com/papyrus_images/d149bbee3ee8fae9ded7083521181b64eefd3cdd8373ba114e57337507079c98.png)

有趣的来了，这个函数是用来在销毁窗口期执行的，首先判断用户持有情况和窗口期时间，然后先执行burn销毁用户代币，再执行mint给用户新创建代币出来，这里用到了cardIdToMint这个参数用来管控到达了第几轮，还记得一开始阿迪达斯说总共有4轮吗。

![](https://storage.googleapis.com/papyrus_images/4f42f4ffd7a646708a0ca5a93e0f6757b8447d7dc75ac5aed9060fbffc1c57f1.png)

这两个函数则是项目方用来操控cardIdToMint具体的轮次。

![](https://storage.googleapis.com/papyrus_images/35b768be5bc78799cb8990c680affb79f83eb4951a908dd0e20bde6f326a777c.png)

以上带着大家通过实战和解读阿迪达斯代码学习了ERC1155协议，相信对于NFT生态有了更深的理解，协议作为基建的创新会释放出更多上层NFT的应用场景。

欢迎添加我的微信：cj350306878 一起交流学习探讨，请备注姓名 公司和职位，谢谢。

其他文章：

*   [可以退款的ERC721R会成为闯入NFT市场的鲶鱼吗？](https://mp.weixin.qq.com/s/LWNDkqrOgBkAX_-Q1ue9Vg)
    
*   [那个可以跨链的Gh0stlyGh0sts会成为下一个Azuki吗？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483939&idx=1&sn=776834ea87918d2bd1a291c99547ba45&chksm=fb04341fcc73bd09879947945e0345b1b087bf9ee2f95aa7e67ee3056acacb1abf37ccba9892&scene=21#wechat_redirect)
    
*   [如何做一个钓鱼网站偷走周杰伦的NFT？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483914&idx=1&sn=f0b64d82edb21edadac8026bf5a916c0&chksm=fb043436cc73bd2011fe5130a591631dbf837f9e64ff6b6f5d8d68a7ade097d1955d85039fc1&scene=21#wechat_redirect)
    
*   [ERC1155是什么？以阿迪达斯NFT为例解析](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483891&idx=1&sn=b83b74b1f6d34b4609886e3f3614c1cf&chksm=fb0437cfcc73bed96264b08823dba695394927e957314518a61aa24aead12d26f7c257589ba0&scene=21#wechat_redirect)
    
*   [怎么通过看懂etherscan了解NFT项目情况？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483868&idx=1&sn=59fcaf88498f5d27cbb038c3dbf17bd7&chksm=fb0437e0cc73bef614f604b7b82d31bc39804f890d50515e01a73c3f5c4678c7b9a4b3d13da4&scene=21#wechat_redirect)
    
*   [我是怎么让V神给我转了一个NFT的？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483830&idx=1&sn=e5df3cf9f507efdaea639a8d4609a913&chksm=fb04378acc73be9cbe36c0e468716be904503008083982f45cb2f740273413928c4e8ce39c4d&scene=21#wechat_redirect)
    
*   [web3的产品架构和web2到底有什么区别？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483795&idx=1&sn=f517a10415078e36920e59db5c935475&chksm=fb0437afcc73beb9c274829a5ccdf0ce404416b6f81b60c6245066ef572500d4c54bfae4c47d&scene=21#wechat_redirect)
    
*   [为什么你在opensea“铸造”的NFT不需要交gas费？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483784&idx=1&sn=b216918a73392ddbcc69efb04988da5b&chksm=fb0437b4cc73bea2e2ba60afbae55ee1d2dd5be806da89b066ab90b47b5d8352e27e086c609a&scene=21#wechat_redirect)
    
*   [如何用5行代码发行一套虚拟货币？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483772&idx=1&sn=89bedacaaa642162b8d48e5b56dc8796&chksm=fb043740cc73be56b586fe8e1ad598548ebd4181a0799014d317581a20816d21c3de1bc268fc&scene=21#wechat_redirect)
    
*   [阿狸NFT到底做错了什么？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483760&idx=1&sn=3df35eed0200d80e7957ec9b64414ace&chksm=fb04374ccc73be5a963704f3cf34b4326edf31c842e452b2c9a8dc6d29617edd57ba453705c2&scene=21#wechat_redirect)
    
*   [web3的世界一片蛮荒-详解ERC721A](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483754&idx=1&sn=c67a5ec2c70d03d4dcb786458d07860e&chksm=fb043756cc73be40027ed1d5c4132bae513b897544078592485887a1e8c4898720835260d500&scene=21#wechat_redirect)
    
*   [如何在一级市场发行NFT（2）：NFT图片生成](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483737&idx=1&sn=bf525bef38f9716fa59d38c410d7068c&chksm=fb043765cc73be731fb65d0a7a8d75136c38c5210e67cd36cc0a4bc71fa883522b2dd827a320&scene=21#wechat_redirect)
    
*   [当你在买NFT时，你买到的究竟是什么？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483721&idx=1&sn=06e96729063655a2f103143b007a8707&chksm=fb043775cc73be6365d1499081073977798f86a5cba98d065bb7efdb68a9b32a91d8fce998a0&scene=21#wechat_redirect)
    
*   [NFT的130亿美金是从哪里来的？它与虚拟货币之间的关系是什么？](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483689&idx=1&sn=6d08a4f92972073b8966b93fe0fc5a14&chksm=fb043715cc73be039d01157e1dd6a56e5bc90d2c3ae59521f373c021cef174b0fb1fcf3e4ecb&scene=21#wechat_redirect)
    
*   [如何在一级市场发行NFT系列（1）：区块链合约开发](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483687&idx=1&sn=b1843982bf62367ee59b78ddda91c3a5&chksm=fb04371bcc73be0d75bfb7272b17604139d98e2e560bdde40859af9d44a431130f80176855ea&scene=21#wechat_redirect)
    
*   [浅谈我对元宇宙、Web3、区块链与NFT的理解](http://mp.weixin.qq.com/s?__biz=MzU0MzgyNjc3MQ==&mid=2247483664&idx=1&sn=bcf16ebc64aa00b97e6da7f52f9db718&chksm=fb04372ccc73be3adc86c44daec8b0c7ab882c942ed7c0dbcd9f0683a9ba846065fe37d4877f&scene=21#wechat_redirect)

---

*Originally published on [Jason chen](https://paragraph.com/@jason-chen/erc1155-nft)*
