<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>shaokui</title>
        <link>https://paragraph.com/@shaokui</link>
        <description>连续创业Loser
从APPSTORE年度最佳，到房地产新房营销代理的跨界经历;
13年BONIC网格计算薅Ripple时上了crypto的车，17年玩过Fabric联盟链为三线城市的政府做了一些实验项目;</description>
        <lastBuildDate>Wed, 10 Jun 2026 22:34:46 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>shaokui</title>
            <url>https://storage.googleapis.com/papyrus_images/53c8706c75dba7dd345011c3c55e9044a6fe362e8ba03cae626e367eeef284c1.jpg</url>
            <link>https://paragraph.com/@shaokui</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[数字劳工和web3的社会变革试验]]></title>
            <link>https://paragraph.com/@shaokui/web3</link>
            <guid>O0kP1cfHDRERrhNybFj3</guid>
            <pubDate>Thu, 21 Apr 2022 11:27:57 GMT</pubDate>
            <description><![CDATA[观察这个“web3.0”时代，发现一个有趣现象：建立自己的论坛和网站（写一个页面开一个Discord），经营着自己的用户（holder），版主=工会，版规=DAO+roadmap。大家相互友情链接（各社群互相给白，偶尔广告形式的白名单）。像极了20年前的站长联盟，然后double click→google pagerank这样的轮回。 信息零散、低效、失真，本身就缺乏google这样的索引，现在还被各个社群封闭起来了，信息回归茧房，这到底是退步还是进步？互联网一直倡导的自由何在？ 今天想聊的是我们所看见的web3，仍旧是垄断底层逻辑下构筑的恶，其上的经济形态也是畸形产物。 我们都知道，数字劳工（Digital Labor）是具备欺骗性的，沉浸在互联网世界的人们表面上看是在消磨时间，实则沦为了互联网企业的“免费劳动者”，我们在“自由”、“平等”、“分享”等商业意识形态的召唤下，廉价甚至无偿贡献着点击、浏览、转发、评论和授权，甚至是创作文章、创作视频等等。 早在1951年， 达拉斯·斯密塞就提出：商业大众传播媒介的主要产品是受众的注意力。focus用今天的话来说就是「流量」。 用他的...]]></description>
            <content:encoded><![CDATA[<p>观察这个“web3.0”时代，发现一个有趣现象：建立自己的论坛和网站（写一个页面开一个Discord），经营着自己的用户（holder），版主=工会，版规=DAO+roadmap。大家相互友情链接（各社群互相给白，偶尔广告形式的白名单）。像极了20年前的站长联盟，然后double click→google pagerank这样的轮回。</p><p>信息零散、低效、失真，本身就缺乏google这样的索引，现在还被各个社群封闭起来了，信息回归茧房，这到底是退步还是进步？互联网一直倡导的自由何在？</p><p>今天想聊的是我们所看见的web3，仍旧是垄断底层逻辑下构筑的恶，其上的经济形态也是畸形产物。</p><p>我们都知道，数字劳工（Digital Labor）是具备欺骗性的，沉浸在互联网世界的人们表面上看是在消磨时间，实则沦为了互联网企业的“免费劳动者”，我们在“自由”、“平等”、“分享”等商业意识形态的召唤下，廉价甚至无偿贡献着点击、浏览、转发、评论和授权，甚至是创作文章、创作视频等等。</p><p>早在1951年， 达拉斯·斯密塞就提出：商业大众传播媒介的主要产品是受众的注意力。focus用今天的话来说就是「流量」。</p><p>用他的话来说，以广告费支持的电视媒介提供喜剧、音乐、新闻、游戏和戏剧等等，这个“免费午餐”其目的是引诱受众来到生产现场——电视机前，其享用者不仅仅是消磨时光，他们还在工作，创造价值。</p><p>这种价值最终是通过购买商品时付出的广告附加费来实现的。</p><p>其不公平处在于，受众在闲暇时间付出了劳动，为媒介创造了价值，但没有得到经济补偿，反而需要承担其经济后果。</p><p>然后让我们快进几十年，进入互联网时代。</p><p>在互联网时代我们经历了web1.0和web2.0。1.0时代的AOL新浪搜狐网易门户们无须多言，仍然是把内容制作好了，只不过生产现场从电视机前，变成了电脑屏幕前。2.0时代的Facebook、Twitter、微信、微博、抖音们，让你可以从被动的接受，变成了可以主动的发布内容，文字、图片或者视频。但是我们发现历史是惊人的相同，我们并没有走出这个奇怪的数字劳工怪圈。相反凭借互联网的巨大发展，事情变得更严重，这些巨头几乎垄断了整个互联网。</p><p>我们的每一次点击、浏览、转发、评论和授权等等任何线上行为，无论是我们给爱豆们点赞，亦或是我们在游戏里给氪金大佬们膜拜，都成为了网站/平台的用户数据，它们可以精准地兜售我们。这不仅仅是一个隐私问题，而是在这样的网络本质下的必然产物——因为我们并不拥有互联网，只是拥有互联网的巨头们的一个数字资产。</p><p>我们会发现无论是投币还是刷个大火箭，以及广泛提及的知识付费，其实只有一小部分被支付给作者这类“数字劳工”，作者群体并没有享受到网络效应对平台带来的更大利益，只是活在平台制造的“公平分配”的浮空泡影里。</p><p>在这样一个底层逻辑是“数字劳工”的建筑之上，构建的经济形态必然也是畸形的产物。</p><p>比如我们熟知的粉丝经济，举例来说，薇娅、李佳琦开直播，你作为粉丝观看他们的视频，不管你消不消费，他们可以依靠大家的focus赚得盆满钵满，所以你可以看到这个补个十几亿的税，那个补个十几亿的税，但是实际上，最应该收缴这个税收的人，应该是全体粉丝！</p><p>在另一个层面上，他们也是直播平台及其资本的数字劳工，他们背后还有千千万万个小主播，在垄断平台制造的扁平化合作经济的影响下，转变为无合同无保障、自我剥削的零工经济从业者，没错，他们在消费广告流量、会员制的同时，也在提供免费劳动力，在这样的无休止的双重剥削下，平台坐享其成。这种现象是90年代的乌托邦理想在如今的资本和技术结合下诞生出的怪胎。</p><p>然后看看现在的web3，愿景其实仍旧是二十年前的自由、开放、共享，只不过需要用去中心化来打破巨头们对互联网的垄断。</p><p>然而现实是，掌控话语权的人，仍旧是以前的人，他们用非常迅速的圈地运动，构筑起一个又一个的堡垒，现在你想进来，还需要高额的入场费，讽刺的是，你还是继续做着你的数字劳工。在Google的不作恶时代，这些都是免费开放的。</p><p>我们看不到离经叛道者，看不到Netscape，看不到Napster，看不到不把人留在自己网站里的Google。</p><p>以Napster为例，它的倒下让大家觉得版权重回正轨，但遗憾的只有唱片和发行是最大的获益者，他们依旧可以剥削创作者们。还记得阅文集团吗？</p><p>没错，资本穿戴着版权保护的外衣，捏造了一个美丽的故事，而现在，资本们穿着去中心化的区块链伪衣，在web2的机房里建造了他们的“联盟链堡垒”。</p><p>既得利益资本是原罪，他们潜伏在革命中。</p><p>维斯塔克批评着BAYC，因为短线的零和游戏会伤害正向的社会试验和进步，他的追随者们却追捧着被内幕交易诟病Moonbird，何其讽刺!</p><p>一千万个聪明的脑袋冲进来想改变世界，全部变成一千万个聪明的割草机。其他人来到这里寻找未来，看到的却是财富密码满天飞！</p><p>这就是你们想要的web3.0?</p>]]></content:encoded>
            <author>shaokui@newsletter.paragraph.com (shaokui)</author>
        </item>
        <item>
            <title><![CDATA[花一百多万买了一个头像后 我终于开始理解它了]]></title>
            <link>https://paragraph.com/@shaokui/Jlr5uD9dmnJO9VipbBei</link>
            <guid>Jlr5uD9dmnJO9VipbBei</guid>
            <pubDate>Tue, 22 Mar 2022 04:21:02 GMT</pubDate>
            <description><![CDATA[转载自：cwweb3 万圣夜前夜，纽约曼哈顿。Bright Moments艺术画廊的工作人员正在紧张的准备第二天的活动，这时他们突然听到了一大堆猿猴的嚎叫。 是15个刚刚下飞机的”猿猴”，第二天才是万圣夜活动，但他们已经等不及表达内心的躁动。 第二天早上7点，他们又回来了，这次不止15个人，整整700个人的队伍排过了三个街区。他们都是无聊猿游艇俱乐部的成员，来领票参加一场真正的游艇派对。这是为期一周的猿猴狂欢节的盛大开幕式，也是NFT.NYC大会的高亮时刻。而足足有五千人在疫情中涌入了纽约，为了参加此次大会 - 一场NFT主题的狂欢。*过去的这年NFT很热，无论是概念层面，项目创新层面还是市场层面。但我始终不理解为什么会有人花那么多钱买个头像，尤其是往往还挺丑。我常说自己不懂艺术，这是事实，是我对这些头像有些偏见的原因，也是对自己不懂艺术类NFT进行的心虚掩饰. 几周前我看到了Coinbase的一篇文章。文章在社交分类里把无聊猿猴游艇俱乐部当做头部DAO推荐。一群买了猴头像的人为什么能够被列为顶级DAO，这燃起了我的兴趣。另一个导火索是阿迪达斯购买了一只猴，并基于买到的猴IP做了...]]></description>
            <content:encoded><![CDATA[<p>转载自：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://chao.mirror.xyz/">cwweb3</a></p><p>万圣夜前夜，纽约曼哈顿。Bright Moments艺术画廊的工作人员正在紧张的准备第二天的活动，这时他们突然听到了一大堆猿猴的嚎叫。</p><p>是15个刚刚下飞机的”猿猴”，第二天才是万圣夜活动，但他们已经等不及表达内心的躁动。</p><p>第二天早上7点，他们又回来了，这次不止15个人，整整700个人的队伍排过了三个街区。他们都是无聊猿游艇俱乐部的成员，来领票参加一场真正的游艇派对。这是为期一周的猿猴狂欢节的盛大开幕式，也是NFT.NYC大会的高亮时刻。而足足有五千人在疫情中涌入了纽约，为了参加此次大会 - 一场NFT主题的狂欢。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/039db4e9103e6cf79ca85a07592ca7f90e0a1bbc5de83e90de75fbef823c9e90.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>*</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/54f44cc9374b684faffc04a47653bddb5e7a61e90942c1d45d79af0660a1c366.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>过去的这年NFT很热，无论是概念层面，项目创新层面还是市场层面。但我始终不理解为什么会有人花那么多钱买个头像，尤其是往往还挺丑。我常说自己不懂艺术，这是事实，是我对这些头像有些偏见的原因，也是对自己不懂艺术类NFT进行的心虚掩饰.</p><p>几周前我看到了Coinbase的一篇文章。文章在社交分类里把无聊猿猴游艇俱乐部当做头部DAO推荐。一群买了猴头像的人为什么能够被列为顶级DAO，这燃起了我的兴趣。另一个导火索是阿迪达斯购买了一只猴，并基于买到的猴IP做了一个很大的元宇宙规划。</p><p>这些也让我反思：**偏见是负担,它混淆过去,威胁未来,并使人无法掌握当下。**也许我应该放弃偏见，更认真的看看这些头部NFT项目的社区和背后的逻辑，即使他有泡沫，也至少去了解泡沫是怎么来的。</p><p><code>NFT是一个非常大的技术概念，能延伸出无数场景，本文讨论的只是NFT场景中很小的一部分。NFT绝不仅仅是头像或者链上艺术品。</code></p><p>我很认真的查了两天，了解了不少背景信息，但总是感觉隔着一层差那么点意思。想来想去隔的这层大概就是 - 我不真正拥有这只猴子，所以我始终是站在局外在看。而身处局外去观察和身处局中去参与体会，跟着大家一起喜怒哀乐，共同成长，产生的观点可能完全不同。为了能够身处局中，我决定买一个。猴很贵，这有点冒险的成分，但也没那么冒险，因为通过一段的了解，我已经猴子的价值有了一定的认知和认可。应该亏也亏不了太多，我这么安慰自己。最终我花了差不多140万，这几乎是市场上能买到的猴子NFT的最低价。毫无疑问，这个价位档的猴子很丑，也没特色，否则肯定不止这个价。贵的也没好看到哪去，我又一次安慰自己。</p><p>朋友圈里有猴的朋友不在少数，还有那么五六位至今用的猴做头像。不过以我的审美取向，我一直觉得这组猴都不咋好看，但都是大家花不少钱买的，我也不好意思提这茬，有人问起来就说不懂不懂，也确实是不懂。不过自从自己也花了钱，竟从原本感觉不咋好看的猴子头像里看出几分顺眼来，这大概也是身处局中和局外的区别吧。</p><p>很多人把NFT当做投资，但我更把这个视作消费，这个猴成为了我学习的资料，参与俱乐部的门票，猴子社区内身份的依托，同时也是一个我可以无限制使用的商业IP所有权，我可以拿它的形象开咖啡馆，做一套公仔去卖，或者授权给别的品牌做商业使用。这是一笔很贵的消费。</p><p><strong>无聊猿猴俱乐部</strong></p><p>Bored Ape Yacht Club - 无聊猿猴游艇俱乐部，简称BAYC。启动于2021年4月底，这是一个由 10,000 个具有不同特征和属性的猿猴NFT组合，这些猴子的服装特征神态各异，但都有一副无聊的表情。上线时的定价大约是200美元一个。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/814d46e22c12a2c11aa614b767cf90ffd111f09aef5f2d78c302cb27cfd08028.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>创办无聊猴俱乐部的是四个普通人，他们创立了一家叫Yuga Labs的公司作为无聊猿背后的运营实体。这四位据考应该是一个大学出来的。其中两位有一些美术功底，另外两位懂一些技术。他们有多普通呢？普通到其中一位小伙伴因为猴子赚到了一笔钱后，第一反应是给自己换了个车，换的还是普普通通的沃尔沃。而当他跟他妈说自己终于赚到了一些钱的时候，这位母亲的反应是 – 哭了.</p><p>可能是因为无聊的表情打动了大家，可能是因为他的画风有一些群体喜爱，也也可能是有特定的群体提前买了货在带节奏。总之，这组猿猴头像火了，火的猝不及防。</p><p><strong>开放 – 品牌的新范式</strong></p><p>猴子火起来的有些意外，但也有一些必然性。无聊猿几乎是用一己之力开创了一个新的开放品牌时代。</p><p>怎么理解开放品牌？简单来讲，当一个人购买了无聊猿的NFT，它不仅仅是买了一副作品，也是获得了一个充满活力的俱乐部的门票，同时拿到了自己这只猴子IP的全部商业使用权。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/871b8d94a069adfec804c04734261aa2699fec10e8341e233c92bc329525fe80.jpg" alt="关于所有权的说明" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">关于所有权的说明</figcaption></figure><p>关于所有权的说明</p><p>最核心的一句翻译如下“<strong>Yuga Labs LLC 授予您无限的全球许可，允许您使用、复制和展示所购买的艺术作品，以及创作基于艺术作品的衍生作品（“商业用途”）</strong>。”</p><p>这意味着当一个人购买作品了以后可以使用这个NFT上的形象放在任何商业场景上使用，并且可以做对外授权，二次创作等等。尽管每一个猴子形象都是独一无二的，但大家同在一个社区，共享了一个大的底层IP。消费者不再是消费者，而是变成了参与者，所有者。</p><p>对于大多数文化品牌，Supreme、漫威，流行音乐，让知识产权自由流通是不被允许的。相比之下，无聊猿将他们的开放性视为一种资产。“人们用猿创造的任何东西只会让品牌成长” 创始人Goner。</p><p>于是大量延伸的作品很快诞生了。猿猴外套，猿猴滑板，猿猴杂志，猿猴TV，猿猴形象的虚拟乐队。而针对其中相当比例使用猿猴IP的创业者，猿猴团队还会给予资助，让他们发挥创造力，扩大品牌影响。因为每个使用猿猴形象做自己商业产品的人都是在参与建设这个品牌。其他社区成员也都在通过各种方式给这个社区和品牌赋能。这就像一个社区版的Supreme，他们把猿猴形象和一切结合，创造出自己的文化。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1de9fa485c193c96671098bb99d437cb42ef1af03c8327bce94f1286dfbe7cde.jpg" alt="各类衍生品" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">各类衍生品</figcaption></figure><p>各类衍生品</p><p>我没能考证出无聊猿是不是第一个把品牌IP完全赋予持有人的NFT作品，但有一点肯定，在无聊猿出现之前，没有人把这套玩法玩通过，这次不仅玩通了，还玩的很大。而在他的成功背后，是大家对这个品牌承载文化的喜爱，对社区的认可，有着高度的共识和价值观认同。</p><p>开放品牌的这个玩法从模式上很容易复制，无聊猿成功后来大家也都学会了，但能够复制其成功的几乎没有。原因很简单，在能凝聚出强大的社区和文化共识前提下，开放品牌才具备价值。</p><p>从这个角度看，Yuga Labs的产品可能根本不是这套NFT，而是一个有共同文化，价值观和强烈自我认同感的强大社区，猿猴NFT只是把大家聚在一起的起因和他们对外输出的承载。</p><p><strong>文化和社区</strong></p><p>无聊猿俱乐部的文化到底是什么？我从第一天就在问自己，但直到现在我也无法很好的回答这个问题。</p><p>人们喜欢无聊猿有很多原因，有人觉得它很酷，有人觉得这种无聊代表着一种反叛。有人觉得创始团队是和你我一样的普通人，看到了自己的影子，而有人则觉得这种开放，代表着一个新世界，还有人觉得无聊猿就是元宇宙。无聊猿在创立之初就吸引到很多年轻，反叛的人，尤其是街头文化圈，体育圈，音乐圈。而这个圈子的人又往往拥有不错的创意和对外输出能力并确实形成了巨大的传播，换句话说，大家都挺会整事。</p><p>创始团队也一样，Yoga labs在持续的运营过程中体现了开放的姿态，持续的给品牌赋能，并且逐渐开创出很多创新的玩法。</p><p>最初俱乐部成员能够互动玩的只有一个叫“卫生间”的共创空间，只有持有猿猴的人才能够在验证通过后打开，欣赏画作或者参加创作，每15分钟可以加一个像素点。起名为卫生间的原因是因为无聊猿的创意是蹲厕所的时候想出来的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/887ec7efd3e6e8eaa039b2bd1093311b29fbc3530b6c03e2b610f7c4cc98f8df.jpg" alt="这是一幅花了100多万才让我登进来看的图" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">这是一幅花了100多万才让我登进来看的图</figcaption></figure><p>这是一幅花了100多万才让我登进来看的图</p><p>而随着社区的发展，越来越多的玩法被发展出来。空投狗，变异猴，猴猴对决，等等以及更宏大的2022路线图。在写作本文的过程中，我的电脑浏览器始终开着几十个窗口，里面是各类关于无聊猿的资料。但最后，我放弃了把所有资料整合到文章里，太多，太长，写不动，估计大家也看不动。</p><p>然而比起这些路线图，更让我觉得有价值的是形成了一个友善的社区。社区的中心成员都有着强烈的共同认同感（当然外围的投资者和投机者比例也不少），大家齐心协力，相互支持，相互帮助。</p><p>尽管Coinbase把无聊猿列为了DAO，但目前其他这个社区还没有形成一个狭义的DAO，没有智能合约，没有治理机制，没有投票。社区自己也承认这一点，并且在路线图上写明了2022年要变成一个DAO。但从更广义的角度说，无聊猿已经是一个DAO，大家早已经开始在没有中心管理方的情况下协作，而他的创始团队Yoga labs也只是这个社区的一员而已。无数猿猴都在为了共同的目标而努力。</p><p>而当猿猴们都在同一个社区工作时，声誉变成了无比重要的事情。人们可以利用它为自己创造巨大的价值。这种声誉的建立需要很长时间。但是，如果有社区成员信任，那么实际上可以真正使用这种信任，而且人们也期待你使用这种信任。这种信任对个人是有着巨大的价值。对于这种信誉的重视对于社区的价值也是巨大的。在这种情况下每一个社区成员都在努力帮助无聊猿变的更强大，而无聊猿在帮助每一个社区成员。</p><p><strong>Twitter和名人效应</strong></p><p>我看过很多社区，但没有一个从传播层面上达到了无聊猿的程度。这一切到底是怎么发生的，我没有结论。但很容易就能观察到的一点是，猿猴们正在席卷Twitter空间，他们把twitter当做了传播品牌和文化的主战场。在Twitter上什么#apefollowape #apetogetherstrong之类的标签层出不穷，并且热度很高。由于支持猿猴的成员散落在各行各业，而不是局限在加密行业，他们的传播能够触达到很多民众。人们会好奇，为什么最近老能看见这只丑丑的猴子。</p><p>就最近几天又有很多猴子在twitter上自发来了次“骄傲加入猴俱乐部”传播。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7965c309e5001810d9e20a242ad15253304bce8fa485ba8ddf08bd7d2bdba6ed.jpg" alt=" 队列整齐划一" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class=""> 队列整齐划一</figcaption></figure><p>队列整齐划一</p><p>我甚至还见到有个小伙子，每天几乎把所有的时候用来帮各种有猿猴的朋友免费制作TwitterBanner，来扩大这种传播。</p><p>而名人效应毫无疑问又给这种传播点了不止一把火。随着影响力和文化的扩大，NBA巨星库里来了。NBC天王级主持也来了，音乐圈的传奇巨星Eminem也来了。其他各类一线名人数的过来的还有至少20个。而twitter粉丝量在几万到几十万之间的中小网络KOL更多。</p><p>他们都不约而同的把猴子当做了自己的头像。</p><p>仅仅上面提到的三个人，推特粉丝量就接近一亿。如果我们想象不出这种传播能造成怎样的影响，不妨类比下。如果有一天你在微博上看到姚明、汪涵、李宗盛同时把头像换成了一个卡通，你会怎么想？</p><p>机构也没闲着，以反叛著称的滚石唱片来了。环球音乐集团投资了一只由无聊猴组成的虚拟乐队。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d387d084abfad45b13a9453352cbc3705f08e8ccb8c5ffbcd515d3c6c8e3b50f.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>而这个名单上最新的一员是阿迪达斯。</p><p><strong>阿迪达斯和无聊猿元宇宙</strong></p><p>阿迪达斯在11月购买了一只编号8774的无聊猿，自动获得了相应的IP授权。阿迪达斯把这个猴命名为Indigo Hertz ，还做了个身穿运动服的图片。并在twitter上把这身处阿迪运动服的8774猴作为了Adadis Orginals 系列的头像。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9b1c9473ce28a5f77fc5bc1d7e8ccea35aea4ed2f590103af549f9c6e38acd47.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>但这显然只是个开始。</p><p>12月，阿迪达斯宣布推出了自己的NFT系列，叫进入元宇宙。在制作这个系列的过程中，阿迪达斯和三个NFT社区进行了合作和一定的品牌整合，其中整合程度最深的毫无疑问是无聊猿。阿迪达斯的这组NFT限量3万个，其中两万个白名单（即可以在公开发售前提前购买，并且确保资格）给到了包括无聊猴在内的三个社区，剩余的部分公开发售。</p><p>所有NFT在几秒钟内售罄。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c3bba2433bc88f7ecab66f4e641a260b8fc3f3a5c0295206e3ff02867c06bc62.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这套NFT能干嘛呢，首先它可以在2022年分三次兑换限量版实物，分别对应了三种服装。（可以预计会有大量的人拿到服装后来各种显摆）。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9cc9a5c2f8d92bce46e6364708681722aa4d8039d655e450c3a0d764018ead8a.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>阿迪达斯还在一个元宇宙应用中做了一个很大的建设计划，这组NFT还是提前参与阿迪元宇宙的门票，不仅能够参观，还应该包括参与共同建设。</p><p>毫无疑问，阿迪达斯理解了元宇宙的根本，用户和社区。他用这种方式表达了自己的理解以及与社区站在一起的态度。</p><blockquote><p>元宇宙在用户的连接，作品的创作和归属方面创造出了无数可能性。尤其是我们最初关注的归属感部分。与无聊猿猴这样的社区合作对阿迪达斯来说是一次巨大的学习之旅。这些社区在坚定的押注未来，我认为我们可以从中学到一些东西。作为一个品牌，当我们的成员希望加入到这样的空间时，我们能否成为他们身边可以信赖的朋友？我们如何能够帮助，教育，指引并告诉他们前方的道路？</p><p>- Tareq Nazlawy 阿迪达斯数字业务高级总监</p></blockquote><p>阿迪达斯要建设的是阿迪达斯元宇宙，但这同样是无聊猴元宇宙的一部分。还是那句话，人们用猿创造的任何东西只会让品牌成长。</p><p>但猿猴元宇宙则远不止于此。</p><p>与元宇宙早期布局者Animoca Brands合作的猿猴NFT游戏2022年会推出。（知名元宇宙项目Sandbox的母公司，也投资了大量元宇宙和NFT类项目并拥有大量知识产权初步）用于元宇宙的3D无聊猿形象已经紧锣密鼓的制作中。</p><p>而还有更多的创新和计划都在不断涌现。</p><p><strong>写在最后</strong></p><p>无聊猿开创了品牌运营的新范式，并很可能会是未来很多年被全球大量商业机构广泛应用的品牌模式。它形成了强大的社区，优秀的文化，以及一个包含巨大商业价值的IP。而这个IP在美国以及其他很多地区已经上升到了文化现象的级别。无聊猿的成功有一定的必然性，但更有着巨大的偶然性。而后期涌现出的各类对于无聊猿拙劣的模仿，基本都是骗子和投机者。不过无聊猿的成功绝非独一无二，它在一定程度上是可复制的，只不过难度超级大。</p><p>对于无聊猿，我的理解还很浅，毕竟刚刚进去玩了两周。学习远未结束，而我还只是游荡在社区边缘的一员，距离真正的理解这个社区和他的文化还有距离。</p><p>猿猴的价格可能已经存在着很大的泡沫，他的爆火背后毫无疑问也一定有投机者炒作的部分在里面。但我又隐约看到未来无聊猿的无限可能。他的价值到底是被高估还是低估，我拥有的这个IP又能够在未来给我带来什么样的商业价值？这个品牌在元宇宙时代到底会演化成什么，大家是不是会聚在一起做出一些更牛的事情，我判断不出来。</p><p>我则把更多关注点放在社区本身。抛去相当比例的投机者和投资者，我在无聊猿社区的中心看到了大量超级友善，超级积极，同时又有着多样背景和丰富知识的人们。我能从他们身上学习到很多，这让我希望更深入的参与社区，学习、成长、在力所能及的时候帮助大家，或者在遇到困难的时候接受大家的帮助。这也可能会在未来变成我社会资本中很重要的一部分。</p><blockquote><p>We&apos;re both a part of ecosystem whereeveryone creates value adds more value to everyone else. I know the work you&apos;redoing will help me the work I&apos;m doing will help you. And together, we&apos;ll beable to build this future Metaverse into a better place than existing realitylooks like.</p><p>- Ohhshine, Community Capitalist</p><p>我们都是生态系统的一部分，每个人都在创造价值，为其他人增加更多价值。我知道你所做的工作会对我有所帮助，我所做的工作也会帮助你。在一起，我们能够将这个未来的 Metaverse建设成一个比现有现实更好的地方。</p></blockquote><p>全文完</p><p>我偶尔会在推上写些只言片语，大家可以加下我的推 @cwweb3 ，有想单独沟通的小伙伴也欢迎在推上dm我。</p><p>由于学习时间不够和研究能力的限制，本文可能存在大量错误观点和与事实不符的情况，阅读者请酌情参考。本文同样无法做到观点完全公正，作者持有无聊猿NFT，并计划在未来很长一段时间继续持有。#Apestogetherstrong</p>]]></content:encoded>
            <author>shaokui@newsletter.paragraph.com (shaokui)</author>
        </item>
        <item>
            <title><![CDATA[如何编写、部署和铸造NFT ]]></title>
            <link>https://paragraph.com/@shaokui/nft-2</link>
            <guid>4zxNWOw5cq5jFEhVe8Fs</guid>
            <pubDate>Mon, 21 Mar 2022 18:52:53 GMT</pubDate>
            <description><![CDATA[在了解了我上一篇推文《畅聊NFT(1)：概念、机制和历史》后，如果你对NFT产生了浓厚的兴趣，或者是想要发行自己的NFT，那么你应该会去以太坊的社区中去寻找资源了。 这篇教程来自以太坊官网，目前只发布了英文版。我提交了一个翻译版本，但是还未通过，所以我把译文整理了一起发布出来。 原文链接 原作者：Sumi Mudgil 翻译：1a96ff,shaokuiPart1. 如何编写和部署NFTNFT的出现，让区块链又重新火了起来。现在是通过在以太坊区块链上发布自己的 NFT（ERC721 代币）来宣传自己的绝佳机会。 Alchemy非常自豪能够为 NFT 领域的知名人士提供支持，包括Makersplace（最近在佳士得Christie’s创下了6900万美元的数字艺术品拍卖纪录）、Dapper Labs（NBATopShot和 Crypto Kitties的创作者）、OpenSea（全球最大的NFT交易市场）、Zora,、Super Rare、NFTfi、Foundation、Enjin、Origin Protocol、Immutable等等。 在此教程中，我们将介绍如何在Ropste...]]></description>
            <content:encoded><![CDATA[<p>在了解了我上一篇推文<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://mp.weixin.qq.com/s?__biz=Mzg4NzE1ODYyNQ==&amp;mid=2247483882&amp;idx=1&amp;sn=66e0f709b6afb4fd423ba894571804d8&amp;chksm=cf8fe3e4f8f86af2be3fd782510d0a9a4c27be95cf4ec45e89298344d6ae55777b57a3cf681f&amp;scene=21#wechat_redirect">《畅聊NFT(1)：概念、机制和历史》</a>后，如果你对NFT产生了浓厚的兴趣，或者是想要发行自己的NFT，那么你应该会去以太坊的社区中去寻找资源了。</p><p>这篇教程来自以太坊官网，目前只发布了英文版。我提交了一个翻译版本，但是还未通过，所以我把译文整理了一起发布出来。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/developers/tutorials/how-to-write-and-deploy-an-nft/">原文链接</a></p><p>原作者：Sumi Mudgil</p><p>翻译：1a96ff,shaokui</p><h2 id="h-part1-nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Part1. 如何编写和部署NFT</strong></h2><p>NFT的出现，让区块链又重新火了起来。现在是通过在以太坊区块链上发布自己的 NFT（ERC721 代币）来宣传自己的绝佳机会。</p><p>Alchemy非常自豪能够为 NFT 领域的知名人士提供支持，包括Makersplace（最近在佳士得Christie’s创下了6900万美元的数字艺术品拍卖纪录）、Dapper Labs（NBATopShot和 Crypto Kitties的创作者）、OpenSea（全球最大的NFT交易市场）、Zora,、Super Rare、NFTfi、Foundation、Enjin、Origin Protocol、Immutable等等。</p><p>在此教程中，我们将介绍如何在Ropsten测试网络上编写和部署ERC721代币的智能合约，我们将会使用到MetaMask、Solidity、Hardhat、Pinata和Alchemy（别担心，我们待会会解释这些东西）。</p><p>在Part2，我们会介绍怎样通过智能合约发行NFT。Part3，我们会解释如何在MetaMask上查看你的NFT。</p><h2 id="h-1" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤1: 连接以太坊网络</h2><p>有很多方法可以向以太坊区块链发出请求，但为了方便起见，我们将使用 Alchemy 上的免费帐户。Alchemy是一个区块链开发平台，它能够提供API，能让我们无需运行自己的节点，即可与以太坊公链进行通信。</p><p>在本教程中，我们将利用Alchemy平台的开发者工具进行监测和分析，以便了解智能合约部署的底层逻辑。如果你没有Alchemy账号，你可以点击<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://auth.alchemyapi.io/signup">此链接</a>免费注册。</p><h2 id="h-2-api" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤2: 创建你的应用程序（以及API密钥）</h2><p>在创建Alchemy账号之后，你可以通过创建一个APP来生成API密钥，它能让我们向Ropsten测试网络发送请求。</p><p>如果您想了解有关测试网络的更多信息，可以点<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemy.com/alchemy/guides/choosing-a-network">此链接</a>。</p><p>1、将鼠标悬停在Alchemy网页导航栏中的「App」，单击「Create App」并前往此页面。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/efb33d438c259c869b8d8579f365e86a1c4ada76323022c1bda2c32e78edcf31.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>2、为你的App取名，并做出简单的描述，在「Enviroment」一栏选择「Staging」（用于APP记账）、「Network」一栏选择「Ropsten」。</p><p>3、点击「Create App」即可。你的App将会出现在下表中。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ced839ddc3e191742a18dde4bc3d85979abe50f9189bea749cd324c8456baa21.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤3: 创建一个以太坊账户</h2><p>我们需要一个以太坊账户发送和接受交易请求。在这次教程中，我们会用MetaMask，这是浏览器中一个可用于管理以太坊账户地址的电子钱包。</p><p>你可以点击<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://metamask.io/download/">此链接</a>下载并创建一个MetaMask账户。</p><p>当你在创建账号时，或你已经注册的账号，确保切换到Ropsten测试网络（页面右上角），这样我们才不会用到真实的货币。</p><h2 id="h-4-faucet" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤4: 从FAUCET中添加以太币</h2><p>我们需要一些假的以太币在测试网络上来部署智能合约。要获得以太币，你可以前往<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://fauceth.komputing.org/">FaucETH网站</a>，然后进入你的Ropsten账户地址，点击「Request funds」，在下拉菜单中选择「Ethereum Testnet Ropsten」，最后再次点击「Request funds」。一会你就能在你的MetaMask账户中看到以太币了。</p><h2 id="h-5" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤5: 查看你的余额</h2><p>为了对余额进行再次核实，我们将用<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://composer.alchemyapi.io/">Alchemy composer tool</a>来发送<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemy.com/alchemy/apis/ethereum#eth_getbalance">eth_getBalance</a>请求。这会返回我们钱包中的以太币数额。输入你的MetaMAsk账号地址后，点击「Send Request」，你可以看到以下反馈：</p><pre data-type="codeBlock" text="`{&quot;jsonrpc&quot;: &quot;2.0&quot;, &quot;id&quot;: 0, &quot;result&quot;: &quot;0xde0b6b3a7640000&quot;}`
"><code>`<span class="hljs-punctuation">{</span><span class="hljs-attr">"jsonrpc"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"2.0"</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"id"</span><span class="hljs-punctuation">:</span> <span class="hljs-number">0</span><span class="hljs-punctuation">,</span> <span class="hljs-attr">"result"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"0xde0b6b3a7640000"</span><span class="hljs-punctuation">}</span>`
</code></pre><blockquote><p><em>注意：这个结果是Wei为单位，并不是ETH。Wei是以太币的最小面额。1 ETH=10¹⁸ Wei。因此如果将0xde0b6b3a7640000转换成10进制，我们将得到1*10¹⁸ wei，即1个eth。</em></p></blockquote><p>咻！我们的假钱都在这了！</p><h2 id="h-6" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤6: 初始化我们的项目</h2><p>首先，我们需要给项目创建一个文件夹。</p><p>进入命令行吧，输入：</p><pre data-type="codeBlock" text="mkdir my-nft
cd my-nft
"><code><span class="hljs-keyword">mkdir</span> <span class="hljs-keyword">my</span>-nft
cd <span class="hljs-keyword">my</span>-nft
</code></pre><p>现在我们已经在项目文件夹中，我们将使用 npm init 来初始化项目。如果你还没下载npm，按照<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://nodejs.org/en/download/">说明</a>进行操作（我们还需要 Node.js，请一起下载！）。</p><pre data-type="codeBlock" text="npm init
"><code>npm <span class="hljs-keyword">init</span>
</code></pre><p>怎么样进行具体的安装我在这里不做解释。下面是我们给出的参考：</p><pre data-type="codeBlock" text="package name: (my-nft)
version: (1.0.0)
description: My first NFT!
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/thesuperb1/Desktop/my-nft/package.json:{
&quot;name&quot;: &quot;my-nft&quot;,
&quot;version&quot;: &quot;1.0.0&quot;,
&quot;description&quot;: &quot;My first NFT!&quot;,
&quot;main&quot;: &quot;index.js&quot;,
&quot;scripts&quot;: {
&quot;test&quot;: &quot;echo \&quot;Error: no test specified\&quot; &amp;&amp; exit 1&quot;
  },
&quot;author&quot;: &quot;&quot;,
&quot;license&quot;: &quot;ISC&quot;
}
"><code>package name: (my<span class="hljs-operator">-</span>nft)
version: (<span class="hljs-number">1.0</span><span class="hljs-number">.0</span>)
description: My first NFT<span class="hljs-operator">!</span>
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to <span class="hljs-operator">/</span>Users<span class="hljs-operator">/</span>thesuperb1<span class="hljs-operator">/</span>Desktop<span class="hljs-operator">/</span>my<span class="hljs-operator">-</span>nft<span class="hljs-operator">/</span>package.json:{
<span class="hljs-string">"name"</span>: <span class="hljs-string">"my-nft"</span>,
<span class="hljs-string">"version"</span>: <span class="hljs-string">"1.0.0"</span>,
<span class="hljs-string">"description"</span>: <span class="hljs-string">"My first NFT!"</span>,
<span class="hljs-string">"main"</span>: <span class="hljs-string">"index.js"</span>,
<span class="hljs-string">"scripts"</span>: {
<span class="hljs-string">"test"</span>: <span class="hljs-string">"echo \"Error: no test specified\" &#x26;&#x26; exit 1"</span>
  },
<span class="hljs-string">"author"</span>: <span class="hljs-string">""</span>,
<span class="hljs-string">"license"</span>: <span class="hljs-string">"ISC"</span>
}
</code></pre><p>添加package.json，我们就可以开始了！</p><h2 id="h-7hardhat" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤7：安装<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hardhat.org/getting-started/#overview">HARDHAT</a></h2><p>Hardhat是一个用于编译、部署、测试和调试以太坊软件的开发环境。它可以帮助开发者在部署到正式链之前进行智能合约和Dapps（分布式应用程序）的创建。</p><p>在my-nft项目中运行：</p><pre data-type="codeBlock" text="npm install --save-dev hardhat
"><code>npm install <span class="hljs-operator">-</span><span class="hljs-operator">-</span>save<span class="hljs-operator">-</span>dev hardhat
</code></pre><p>在此网页的 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hardhat.org/getting-started/#overview">installation installation</a>中可了解更多细节。</p><h2 id="h-8-hardhat" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤8: 创建Hardhat项目</h2><p>在项目文件夹中运行：</p><pre data-type="codeBlock" text="npx hardhat
"><code></code></pre><p>你会看到一条欢迎消息和用于选择您想要执行的操作的选项。选择「create an empty hardhat.config.js」</p><pre data-type="codeBlock" text="888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     &quot;88b 888P&quot;  d88&quot; 888 888 &quot;88b     &quot;88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 &quot;Y888888 888     &quot;Y88888 888  888 &quot;Y888888  &quot;Y888
👷 Welcome to Hardhat v2.0.11 👷
? What do you want to do? …
Create a sample project
❯ Create an empty hardhat.config.js
Quit
"><code><span class="hljs-number">888</span>    <span class="hljs-number">888</span>                      <span class="hljs-number">888</span> <span class="hljs-number">888</span>               <span class="hljs-number">888</span>
<span class="hljs-number">888</span>    <span class="hljs-number">888</span>                      <span class="hljs-number">888</span> <span class="hljs-number">888</span>               <span class="hljs-number">888</span>
<span class="hljs-number">888</span>    <span class="hljs-number">888</span>                      <span class="hljs-number">888</span> <span class="hljs-number">888</span>               <span class="hljs-number">888</span>
<span class="hljs-number">8888888888</span>  8888b.  888d888 .d88888 88888b.   8888b.  <span class="hljs-number">888888</span>
<span class="hljs-number">888</span>    <span class="hljs-number">888</span>     <span class="hljs-string">"88b 888P"</span>  d88<span class="hljs-string">" 888 888 "</span>88b     <span class="hljs-string">"88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 "</span>Y888888 <span class="hljs-number">888</span>     <span class="hljs-string">"Y88888 888  888 "</span>Y888888  <span class="hljs-string">"Y888
👷 Welcome to Hardhat v2.0.11 👷
? What do you want to do? …
Create a sample project
❯ Create an empty hardhat.config.js
Quit
</span></code></pre><p>这将会生成一个 hardhat.config.js 文件，用于配置项目的所有设置（在步骤13）。</p><h2 id="h-9" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤9: 添加项目文件夹</h2><p>为了让我们有序管理项目，我们需要创造2个新文件夹。在命令行中导航到项目根目录并输入：</p><pre data-type="codeBlock" text="mkdir contracts
mkdir scripts
"><code>mkdir contracts
mkdir scripts
</code></pre><p>· contracts/ 用于存放NFT智能合约代码</p><p>· scripts/ 用于存放脚本以部署和交互我们的智能合约</p><h2 id="h-10" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤10: 编写合约</h2><p>现在我们的环境已经配置完成，接下来是更令人兴奋的事情：</p><p>编写我们的智能合约代码！</p><p>在你最常用的编辑器中打开my-nft项目（我们比较喜欢用<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://code.visualstudio.com/">VScode</a>）。智能合约是用Solidity语言来编写的，这也是我们即将用来写MyNFT.sol智能合约的语言。</p><p>1、导航 contracts 文件夹，创建一个名为 MyNFT.sol 的新文件。</p><p>2、这里我们给你一个基于<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.openzeppelin.com/contracts/3.x/erc721">OpenZeppelin</a>库的ERC721协议来实现的NFT智能合约代码。</p><p>你可以复制粘贴到你的 MyNFT.sol 文件中。</p><pre data-type="codeBlock" text="//Contract based on [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;import &quot;@openzeppelin/contracts/token/ERC721/ERC721.sol&quot;;
import &quot;@openzeppelin/contracts/utils/Counters.sol&quot;;
import &quot;@openzeppelin/contracts/access/Ownable.sol&quot;;
import &quot;@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol&quot;;contract MyNFT is ERC721URIStorage, Ownable {
    using Counters for Counters.Counter;
    Counters.Counter private _tokenIds;constructor() ERC721(&quot;MyNFT&quot;, &quot;NFT&quot;) {}function mintNFT(address recipient, string memory tokenURI)
        public onlyOwner
        returns (uint256)
{
        _tokenIds.increment();uint256 newItemId = _tokenIds.current();
        _mint(recipient, newItemId);
        _setTokenURI(newItemId, tokenURI);return newItemId;
    }
}
"><code><span class="hljs-comment">//Contract based on [https://docs.openzeppelin.com/contracts/3.x/erc721](https://docs.openzeppelin.com/contracts/3.x/erc721)</span>
<span class="hljs-comment">// SPDX-License-Identifier: MIT</span>
<span class="hljs-meta"><span class="hljs-keyword">pragma</span> <span class="hljs-keyword">solidity</span> ^0.8.0;</span><span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/token/ERC721/ERC721.sol"</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/utils/Counters.sol"</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/access/Ownable.sol"</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">"@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"</span>;<span class="hljs-class"><span class="hljs-keyword">contract</span> <span class="hljs-title">MyNFT</span> <span class="hljs-keyword">is</span> <span class="hljs-title">ERC721URIStorage</span>, <span class="hljs-title">Ownable</span> </span>{
    <span class="hljs-keyword">using</span> <span class="hljs-title">Counters</span> <span class="hljs-title"><span class="hljs-keyword">for</span></span> <span class="hljs-title">Counters</span>.<span class="hljs-title">Counter</span>;
    Counters.Counter <span class="hljs-keyword">private</span> _tokenIds;<span class="hljs-function"><span class="hljs-keyword">constructor</span>(<span class="hljs-params"></span>) <span class="hljs-title">ERC721</span>(<span class="hljs-params"><span class="hljs-string">"MyNFT"</span>, <span class="hljs-string">"NFT"</span></span>) </span>{}<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">mintNFT</span>(<span class="hljs-params"><span class="hljs-keyword">address</span> recipient, <span class="hljs-keyword">string</span> <span class="hljs-keyword">memory</span> tokenURI</span>)
        <span class="hljs-title"><span class="hljs-keyword">public</span></span> <span class="hljs-title">onlyOwner</span>
        <span class="hljs-title"><span class="hljs-keyword">returns</span></span> (<span class="hljs-params"><span class="hljs-keyword">uint256</span></span>)
</span>{
        _tokenIds.increment();<span class="hljs-keyword">uint256</span> newItemId <span class="hljs-operator">=</span> _tokenIds.current();
        _mint(recipient, newItemId);
        _setTokenURI(newItemId, tokenURI);<span class="hljs-keyword">return</span> newItemId;
    }
}
</code></pre><p>3、因为我们要继承OpenZeppelin合约库中的类，所以请在命令行中运行 npm install @openzeppelin/contracts ，将这个库安装到文件夹中。</p><p>那么这段代码实现了什么呢？让我们一行一行的进行分解。</p><p>在智能合约的顶部，我们引入了3个<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://openzeppelin.com/">OpenZeppelin</a>的智能合约类：</p><ul><li><p>@openzeppelin/contracts/token/ERC721/ERC721.sol包含了我们的智能合约需要继承的ERC721协议的所有标准方法的实现（要让NFT有效，你的智能合约需要实现所有ERC721协议标准的方法）想了解更多地了解继承的ERC721功能，可以在<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-721">这份文档</a>里查看接口定义。</p></li><li><p>@openzeppelin/contracts/utils/Counters.sol 提供了一个计数器，它只能增加或减少1。智能合约用计数器来记录总的NFT铸造的总数量，并且为我们新的NFT设置唯一的ID。（每一个用智能合约发行的NFT都会被分配一个唯一的ID — — 这个唯一的ID由NFT的总数量决定。比如，我们用智能合约发行的第一个NFT的ID为1，第二个NFT的ID是2，以此类推。）</p></li><li><p>@openzeppelin/contracts/access/Ownable.sol 给我们的智能合约设置了访问控制，因此只有智能合约的所有者可以铸造NFT。（注意：访问控制完全凭个人喜欢。如果你想让任何人都可以使用你的智能合约铸造NFT的话，删除第10行的Ownable和第17行的onlyOwner）。</p></li></ul><p>引入这些声明后，我们的自定义NFT智能合约就完成了。它非常的精简，只包含了一个计数器、一个构造函数和一个函数！这主要归功于我们继承了OpenZepplin合约，它帮助我们执行了创造NFT所需要的大部分方法。例如，返回NFT所有者的 ownerOf ，将NFT所有权从一个账户转移到另一个账户的 transferFrom 。</p><p>在ERC721构造函数中，你会发现我们传了2个字符串， “MyNFT”和“NFT”。第一个变量是智能合约的名称，第二个是它的符号（数据类型）。你可以随意给这些变量命名！</p><p>最后，我们用 函数 mintNFT(address recipient, string memory uri) 来铸造NFT。这个函数有两个变量：</p><ul><li><p>address recipient 指定接收新铸造的NFT的地址。</p></li><li><p>string memory tokenURI 这个字符串会解析为一个描述NFT元数据的JSON文件。NFT元数据会让NFT栩栩如生，它使NFT具有很多可配置的属性，例如名称、描述、图片以及其他属性。Part2教程中，我们会解释如何配置这些元数据。</p></li></ul><p>mintNFT 从继承的ERC721库中调用了一些方法，最终返回一个数字，代表最新铸造的NFT的ID。</p><h2 id="h-11-metamaskalchemy" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤11: 将MetaMask和Alchemy与你的项目连接</h2><p>目前我们已经建立了MetaMask钱包、Alchemy账户和编写好的智能合约，是时候将三者连接一起了。</p><p>每笔从电子钱包发送的交易，都需要使用你独有的私钥进行签名。为了让我们程序拥有这类权限，我们可以将私钥（以及Alchemy的API密钥）安全地储存在一个环境变量文件中。</p><p>如需了解更多关于发送交易的信息，请查看使用web3发送交易的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/">教程</a>。</p><p>首先，在项目目录中安装dotenv包：</p><pre data-type="codeBlock" text="npm install dotenv --save
"><code>npm install dotenv <span class="hljs-operator">-</span><span class="hljs-operator">-</span>save
</code></pre><p>然后，在项目的根目录中建立一个名为 .env 的环境变量文件，并将你的MetaMask私钥和HTTP Alchemy API URL添加进去。</p><ul><li><p>按照这个<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key">指引</a>从MetaMask中导出你的私钥</p></li><li><p>按照下图所示获取并复制HTTP Alchemy API URL</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/65760c616f54379405d7ffb2de3108a0556040b159e3d9be37db5bcb6d0b53ff.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>你的 .env 文件应该如下所示：</p><pre data-type="codeBlock" text="API_URL=&quot;https://eth-ropsten.alchemyapi.io/v2/your-api-key&quot;
PRIVATE_KEY=&quot;your-metamask-private-key&quot;
"><code><span class="hljs-attr">API_URL</span>=<span class="hljs-string">"https://eth-ropsten.alchemyapi.io/v2/your-api-key"</span>
<span class="hljs-attr">PRIVATE_KEY</span>=<span class="hljs-string">"your-metamask-private-key"</span>
</code></pre><p>为确保我们成功将其连接到我们的代码，我们将在步骤13中引用 hardhat.config.js 文件中的变量。</p><blockquote><p>*不要提交 .env ！请确保不要与任何人共享或公开您的 .env 文件，否则会泄露您的密钥。如果您使用版本控制，请将您的 .env 添加到 *<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://git-scm.com/docs/gitignore">*gitignore *</a><em>文件中。</em></p></blockquote><h2 id="h-12-ethersjs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤12: 安装ETHERS.JS</h2><p>Ethers.js是一个库，它打包了更具有易用性的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/developers/docs/apis/json-rpc/">标准JSON-RPC方法</a>，使得向以太坊发出请求和交互更加容易。</p><p>Hardhat使得将<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hardhat.org/plugins/">插件</a>集成到附加工具和扩展功能中这件事变得超级简单。我们将使用以太币插件<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hardhat.org/plugins/nomiclabs-hardhat-ethers.html">Ethers Plugins</a>来部署合约。<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethers-io/ethers.js/">Ethers.js</a>有一些非常简洁的合约部署方法。</p><p>在你的项目目录中输入：</p><pre data-type="codeBlock" text="npm install --save-dev @nomiclabs/hardhat-ethers ethers@^5.0.0
"><code>npm install <span class="hljs-operator">-</span><span class="hljs-operator">-</span>save<span class="hljs-operator">-</span>dev @nomiclabs<span class="hljs-operator">/</span>hardhat<span class="hljs-operator">-</span>ethers ethers@<span class="hljs-operator">^</span><span class="hljs-number">5.0</span><span class="hljs-number">.0</span>
</code></pre><p>在下一步中，我们还需要在 hardhat.config.js 中使用以太币。</p><h2 id="h-13-hardhatconfigjs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤13: 更新HARDHAT.CONFIG.JS</h2><p>目前我们已经添加了几种依赖库和插件，为了让我们的项目使用这些组件，现在我们需要更新hardhat.config.js。</p><p>下面是更新hardhat.config.js的方法：</p><pre data-type="codeBlock" text="/**
* @type import(&apos;hardhat/config&apos;).HardhatUserConfig
*/
require(&apos;dotenv&apos;).config();
require(&quot;@nomiclabs/hardhat-ethers&quot;);
const { API_URL, PRIVATE_KEY } = process.env;
module.exports = {
solidity: &quot;0.8.1&quot;,
defaultNetwork: &quot;ropsten&quot;,
networks: {
hardhat: {},
ropsten: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
      }
   },
}
"><code><span class="hljs-comment">/**
* @type import('hardhat/config').HardhatUserConfig
*/</span>
<span class="hljs-built_in">require</span>(<span class="hljs-string">'dotenv'</span>).config();
<span class="hljs-built_in">require</span>(<span class="hljs-string">"@nomiclabs/hardhat-ethers"</span>);
const { API_URL, PRIVATE_KEY } <span class="hljs-operator">=</span> process.env;
module.exports <span class="hljs-operator">=</span> {
solidity: <span class="hljs-string">"0.8.1"</span>,
defaultNetwork: <span class="hljs-string">"ropsten"</span>,
networks: {
hardhat: {},
ropsten: {
url: API_URL,
accounts: [`0x${PRIVATE_KEY}`]
      }
   },
}
</code></pre><h2 id="h-14" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤14: 编译合约</h2><p>为了确保事情都能运转起来，我们现在来编译合约。编译任务是Hardhat内置任务之一。</p><p>在命令行执行：</p><pre data-type="codeBlock" text="npx hardhat compile
"><code>npx hardhat <span class="hljs-built_in">compile</span>
</code></pre><p>您可能会收到关于源文件中未提供SPDX许可证标识符的警告，但无需担心，希望其他一切看起来都不错！如果遇到问题，您可以随时在<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/u72VCg3">Alchemy discord</a>中发送消息。</p><h2 id="h-15" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤15: 编写部署脚本</h2><p>目前我们的合约已经编写好，配置文件也已准备好，是时候编写合约部署脚本。</p><p>导航到 scripts/ 文件夹，并创建一个名为 deploy.js 的新文件，在里面添加如下内容：</p><pre data-type="codeBlock" text="async function main() {
const MyNFT = await ethers.getContractFactory(&quot;MyNFT&quot;)// Start deployment, returning a promise that resolves to a contract object
const myNFT = await MyNFT.deploy()
await myNFT.deployed()
console.log(&quot;Contract deployed to address:&quot;, myNFT.address)
}main()
  .then(() =&gt; process.exit(0))
  .catch((error) =&gt; {
console.error(error)
    process.exit(1)
  })
"><code>async <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">main</span>(<span class="hljs-params"></span>) </span>{
const MyNFT <span class="hljs-operator">=</span> await ethers.getContractFactory(<span class="hljs-string">"MyNFT"</span>)<span class="hljs-comment">// Start deployment, returning a promise that resolves to a contract object</span>
const myNFT <span class="hljs-operator">=</span> await MyNFT.deploy()
await myNFT.deployed()
console.log(<span class="hljs-string">"Contract deployed to address:"</span>, myNFT.<span class="hljs-built_in">address</span>)
}main()
  .then(() <span class="hljs-operator">=</span><span class="hljs-operator">></span> process.exit(<span class="hljs-number">0</span>))
  .catch((<span class="hljs-function"><span class="hljs-keyword">error</span>) => </span>{
console.error(<span class="hljs-function"><span class="hljs-keyword">error</span>)
    <span class="hljs-title">process</span>.<span class="hljs-title">exit</span>(<span class="hljs-params"><span class="hljs-number">1</span></span>)
  })
</span></code></pre><p>Hardhat在他们的合约教程中，非常详细的说明了每一行代码的作用，我们这里直接采用他们的解释。</p><pre data-type="codeBlock" text="const MyNFT = await ethers.getContractFactory(&quot;MyNFT&quot;);
"><code>const <span class="hljs-attr">MyNFT</span> = await ethers.getContractFactory(<span class="hljs-string">"MyNFT"</span>)<span class="hljs-comment">;</span>
</code></pre><p>ethers.js 中的 ContractFactory 是用于部署新的智能合约的一种抽象类，因此在这，MyNFT是NFT合约实例中的工厂。当使用Hardhat-ethers插件时，ContractFactory和合约实例默认会连接第一个签名者。</p><pre data-type="codeBlock" text="const myNFT = await MyNFT.deploy();
"><code>const <span class="hljs-attr">myNFT</span> = await MyNFT.deploy()<span class="hljs-comment">;</span>
</code></pre><p>在ContractFactory中调用 deploy() 函数将会启动部署，并返回解析为合约的Promise实例。这个对象包括我们智能合约中每个函数的对应调用方法。</p><h2 id="h-16" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤16: 部署合约</h2><p>我们终于准备好部署我们的智能合约了！</p><p>回到项目的根目录，并在命令行中运行：</p><pre data-type="codeBlock" text="npx hardhat --network ropsten run scripts/deploy.js
"><code>npx hardhat <span class="hljs-operator">-</span><span class="hljs-operator">-</span>network ropsten run scripts<span class="hljs-operator">/</span>deploy.js
</code></pre><p>接着你会看到类似于下面的交易：</p><pre data-type="codeBlock" text="Contract deployed to address: 0x81c587EB0fE773404c42c1d2666b5f557C470eED
"><code>Contract deployed <span class="hljs-selector-tag">to</span> <span class="hljs-selector-tag">address</span>: <span class="hljs-number">0</span>x81c587EB0fE773404c42c1d2666b5f557C470eED
</code></pre><p>如果我们访问<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ropsten.etherscan.io/">Ropsten etherscan</a>搜索我们的合约地址，就可以看到它已经部署成功了。如果您无法立即看到它，请稍等片刻。</p><p>交易将如下所示：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e93899f48f53fdf4ee4373ac0cc2d751b32bcb88cc3b38a2542322d8c39df28a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>你的MetaMask账户地址应该和发送地址相匹配，收件人地址会显示：“Contract Creation”。如果我们点进交易，可以在“To”的那一栏看到我们的合约地址。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4e45c9fe6e5a6e018c469ebef3cb6b8d9e9cecfca9942964c7694360f0bd0340.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>真是太赞啦！你已经成功将你的NFT智能合约部署在以太坊区块链上了！</p><p>为了更深入地了解背后的逻辑，我们导航到<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dashboard.alchemyapi.io/explorer">Alchemy仪表盘</a>的「Explorer」选项卡。如果你有多个Alchemy的apps，记得按应用程序筛选并选择“MyNFT”。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8b800a530f116fe314e43df76eff86d8d42d81bbac262ebefda989e40b506deb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>你会看到一些JSON-RPC的远程调用，这里是当我们调用 .deploy() 函数时，Hardhat/Ethers为我们在底层完成的。在这指出2个比较重要的，一个是 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/developers/docs/apis/json-rpc/#eth_sendrawtransaction">eth_sendRawTransaction</a> ，这是实际将我们的智能合约写入Ropsten链上的请求；另一个是 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/developers/docs/apis/json-rpc/#eth_gettransactionbyhash">eth_getTransactionByHash</a> ，这是在交易指定哈希（发送交易时的典型模式）的情况下，读取相关交易信息的请求。若要详细了解关于发送交易的信息，请查看此有关<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/zh/developers/tutorials/sending-transactions-using-web3-and-alchemy/">使用 Web3 发送交易</a>的教程。</p><h2 id="h-part2-nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Part2. 如何铸造NFT</strong></h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.nytimes.com/2021/03/11/arts/design/nft-auction-christies-beeple.html">Beeple</a>: 6900万美元,<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.forbes.com/sites/abrambrown/2021/03/03/3lau-nft-nonfungible-tokens-justin-blau/?sh=5f72ef64643b">3LAU</a>: 1100万美元,<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.theguardian.com/music/2021/mar/02/grimes-sells-digital-art-collection-non-fungible-tokens">Grimes</a>: 600万美元</p><p>以上项目都使用了Alchemy的强大API来铸造的NFT。在此教程中，我将教你如何在10min内完成同样的操作。</p><p>铸造NFT就是在区块链上发布一个专属于你自己的ERC721代币。</p><p>使用我们Part1教程中讲到的智能合约，可以让我们灵活运用我们的web3技能来铸造NFT。在本教程结束时，只要你或者你的钱包想要，都可以随心所欲的铸造足够多的NFTs。</p><p>让我们开始吧！</p><h2 id="h-1-web3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤1: 安装Web3</h2><p>如果你参照第一篇教程来创建了NFT智能合约，那你已经有使用 Ethers.js 的经验了。Web3和Ethers类似，它是一个能更轻松的向以太坊区块链发起请求的库。在这篇教程中，我们将会使用 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemy.com/alchemy/documentation/alchemy-web3">Alchemy Web3</a>，这是一个加强版的web3库，它提供更多功能，比如自动调试和鲁棒性的WebSocket支持。</p><p>在你的项目主目录中运行：</p><pre data-type="codeBlock" text="npm install @alch/alchemy-web3
"><code>npm install @alch<span class="hljs-operator">/</span>alchemy<span class="hljs-operator">-</span>web3
</code></pre><h2 id="h-2-mint-nftjs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤2: 创建一个 Mint-NFT.js 文件</h2><p>在你的脚本目录中，创建一个 mint-nft.js 文件，并且添加以下几行代码：</p><pre data-type="codeBlock" text="require(&quot;dotenv&quot;).config()
const API_URL = process.env.API_URL
const { createAlchemyWeb3 } = require(&quot;@alch/alchemy-web3&quot;)
const web3 = createAlchemyWeb3(API_URL)
"><code><span class="hljs-built_in">require</span>(<span class="hljs-string">"dotenv"</span>).config()
const API_URL <span class="hljs-operator">=</span> process.env.API_URL
const { createAlchemyWeb3 } <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span>(<span class="hljs-string">"@alch/alchemy-web3"</span>)
const web3 <span class="hljs-operator">=</span> createAlchemyWeb3(API_URL)
</code></pre><h2 id="h-3-abi" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤3: 获取你的合约ABI</h2><p>合约ABI（Application Binary Interface 应用程序的二进制接口）是与智能合约交互的接口。你可以在<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemyapi.io/alchemy/guides/eth_getlogs#what-are-ab-is">此链接</a>中了解更多有关Contract ABIs的信息。Hardhat会自动生成ABI并且储存在 MyNFT.json 文件中。为了使用它，我们需要在 mint-nft.js 文件中添加以下代码来解析内容：</p><pre data-type="codeBlock" text="const contract = require(&quot;../artifacts/contracts/MyNFT.sol/MyNFT.json&quot;)
"><code>const <span class="hljs-class"><span class="hljs-keyword">contract</span> = <span class="hljs-title"><span class="hljs-built_in">require</span></span>(<span class="hljs-params"><span class="hljs-string">"../artifacts/contracts/MyNFT.sol/MyNFT.json"</span></span>)
</span></code></pre><p>如果你想看ABI，你可以输出到你的控制台：</p><pre data-type="codeBlock" text="console.log(JSON.stringify(contract.abi))
"><code>console.log(JSON.stringify(<span class="hljs-keyword">contract</span>.abi))
</code></pre><p>要运行 mint-nft.js 并查看你输出到控制台的ABI，需要打开终端并运行：</p><pre data-type="codeBlock" text="node scripts/mint-nft.js
"><code>node scripts<span class="hljs-operator">/</span>mint<span class="hljs-operator">-</span>nft.js
</code></pre><h2 id="h-4-ipfsnftyuan" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤4: 使用IPFS给NFT配置元数据</h2><p>如果你还记得Part1的教程那你应该知道，我们的 mintNFT 智能合约函数里包含有一个tokenURI参数，该参数会解析为一个JSON文件，用于描述NFT元数据 — — 它让NFT栩栩如生，因为元数据让NFT具有很多可配置的属性，比如名称、图像和其他属性。</p><p><em>IPFS（Interplanetary File System,星际文件系统）是一个去中心化协议和P2P网络，它用来在分布式文件系统中储存和共享数据。</em></p><p>我们将会使用到Pinata，一个便捷的IPFS API和工具包，用来来存储NFT资产和元数据，确保NFT是真正去中心化的。如果你没有Pinata账户，点<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.pinata.cloud/">此链接</a>免费注册并完成邮箱验证。</p><p>当你创建账户后：</p><ul><li><p>导航「Files」页面，点击页面左上方的蓝色按钮「Upload」</p></li><li><p>将图片上传到Pinata，这个图片会是NFT的图片资产，你可以随便给你的资产命名。</p></li><li><p>上传之后，你会在Files页面的表格中看到文件信息。还有一行CID，点击旁边的复制按钮，就可以复制CID。</p></li><li><p>你可以在这个位置查看上传的图片：https://gateway.pinata.cloud/ipfs/&lt;CID&gt;.你可以使用IPFS<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gateway.pinata.cloud/ipfs/QmarPqdEuzh5RsWpyH2hZ3qSXBCzC5RyK3ZHnFkAsk7u2f">像这样</a>找到图片，例如这个链接。</p></li></ul><p>下面是给初学者总结的图像教学步骤：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e5afb2403e39b611178ab2bf16aa7fe7936a621a9e1d92a4c6682bc480ea455d.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>现在我们想在Pinata上再上传一个文件。但在我们上传之前，需要先创建该文件！</p><p>在你的根目录中，创建一个名为 nft-metadata.json 的新文件，并添加如下json代码：</p><pre data-type="codeBlock" text="{
  &quot;attributes&quot;: [
    {
      &quot;trait_type&quot;: &quot;Breed&quot;,
      &quot;value&quot;: &quot;Maltipoo&quot;
    },
    {
      &quot;trait_type&quot;: &quot;Eye color&quot;,
      &quot;value&quot;: &quot;Mocha&quot;
    }
  ],
  &quot;description&quot;: &quot;The world&apos;s most adorable and sensitive pup.&quot;,
  &quot;image&quot;: &quot;https://gateway.pinata.cloud/ipfs/QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb&quot;,
  &quot;name&quot;: &quot;Ramses&quot;
}
"><code><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">"attributes"</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span>
    <span class="hljs-punctuation">{</span>
      <span class="hljs-attr">"trait_type"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Breed"</span><span class="hljs-punctuation">,</span>
      <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Maltipoo"</span>
    <span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
    <span class="hljs-punctuation">{</span>
      <span class="hljs-attr">"trait_type"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Eye color"</span><span class="hljs-punctuation">,</span>
      <span class="hljs-attr">"value"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Mocha"</span>
    <span class="hljs-punctuation">}</span>
  <span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"description"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"The world's most adorable and sensitive pup."</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"image"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"https://gateway.pinata.cloud/ipfs/QmWmvTJmJU3pozR9ZHFmQC2DNDwi2XJtf3QGyYiiagFSWb"</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">"name"</span><span class="hljs-punctuation">:</span> <span class="hljs-string">"Ramses"</span>
<span class="hljs-punctuation">}</span>
</code></pre><p>你可以随意更改json中的数据。你可以删除或添加属性。最重要的是，请确保图片的字段是指向你的IPFS图像的位置，否则，你的NFT会包含一张（非常cute的！）狗狗的照片。</p><p>完成json文件的编辑后，参照如下图片指南的参考，将其保存并上传到Pinata。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cdd4b5ce9dd1087d18d078bc34aaf2b08921f718dea3a53db482bec0a5de026d.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-5" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤5: 创建一个合约实例</h2><p>现在，为了与合约交互，我们需要在代码中创建一个实例。</p><p>为了做到这些，首先需要一个合约地址，我们可以这样来找到该地址：从部署或者在<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ropsten.etherscan.io/">Etherscan</a>中查找之前部署合约的地址。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/89d4cd879e8c698bbb0746aa151c1e1623024cbf2ea412f0cb0b1c28f28eadbd.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>在上面的示例中，我们的合约地址是0x81c587EB0fE773404c42c1d2666b5f557C470eED。</p><p>下一步我们会用web3的<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://web3js.readthedocs.io/en/v1.2.0/web3-eth-contract.html?highlight=constructor#web3-eth-contract">合约方法</a>，调用ABI和address来创建合约。</p><p>在你的 mint-nft.js. 文档中，添加下列代码：</p><pre data-type="codeBlock" text="const contractAddress = &quot;0x81c587EB0fE773404c42c1d2666b5f557C470eED&quot;const nftContract = new web3.eth.Contract(contract.abi, contractAddress)
"><code>const contractAddress <span class="hljs-operator">=</span> <span class="hljs-string">"0x81c587EB0fE773404c42c1d2666b5f557C470eED"</span>const nftContract <span class="hljs-operator">=</span> <span class="hljs-keyword">new</span> web3.eth.Contract(<span class="hljs-keyword">contract</span>.abi, contractAddress)
</code></pre><h2 id="h-6-env" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>步骤6: 更新环境变量文件.env</strong></h2><p>现在，为向以太坊区块链创建并发送交易，我们使用你的公用的以太坊账户地址来获取账户的区块编号/区块高度（account nouce，我们会在后面解释）。</p><blockquote><p><em>注：</em></p><p><em>account nonce是每个账户中交易的计数器，它等于从该地址发送交易的数量，或者在具有关联代码的账户的情况下，该账户创建的合约数量。</em></p><p><em>以太坊所有的交易都是基于account ，因此需要对每次交易都按顺序记录，nonce值便是这个顺序。</em></p><p><em>ETH（ETC）节点要求每笔交易必须有一个nonce数值。每一个账户从同一个节点发起交易时，这个nonce值从0开始计数，发送一笔nonce对应加1。当前面的nonce处理完成之后才会处理后面的nonce。</em></p><p><em>nonce是交易原始地址的属性。它不存储在以太坊区块链上，而是通过计算从一个地址发送的交易数量来计。</em></p></blockquote><p>将你的公钥添加到 .env 文件，如果你按照Part1教程操作， .env 文档应该会是如下所示：</p><pre data-type="codeBlock" text="API_URL = &quot;https://eth-ropsten.alchemyapi.io/v2/your-api-key&quot;
PRIVATE_KEY = &quot;your-private-account-address&quot;
PUBLIC_KEY = &quot;your-public-account-address&quot;
"><code><span class="hljs-attr">API_URL</span> = <span class="hljs-string">"https://eth-ropsten.alchemyapi.io/v2/your-api-key"</span>
<span class="hljs-attr">PRIVATE_KEY</span> = <span class="hljs-string">"your-private-account-address"</span>
<span class="hljs-attr">PUBLIC_KEY</span> = <span class="hljs-string">"your-public-account-address"</span>
</code></pre><h2 id="h-7" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤7: 创建你的交易</h2><p>首先，让我们声明一个名为 mintNFT(tokenData) 的函数，并通过执行以下操作来创建我们的交易：</p><p>1、从 .env 文件中获取你的 PRIVATE_KEY （私钥）和 PUBLIC_KEY （公钥）。</p><p>2、下一步，我们需要计算出区块高度（account nonce）。nonce规范是用来跟踪从你的地址所发送的交易的数量，同时还为了确保安全以阻止<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemyapi.io/resources/blockchain-glossary#account-nonce">重放攻击</a>。我们需要用到<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.alchemyapi.io/documentation/alchemy-api-reference/json-rpc#eth_gettransactioncount">getTransactionCount</a>来获取从你的地址发送的交易的数量。</p><p>3、最后，我们需要根据下列信息来设置交易：</p><ul><li><p>‘from’: PUBLIC_KEY ：我们的交易来源是我们的公共地址</p></li><li><p>‘to’: contractAddress ：我希望能交互并发送交易的合约地址</p></li><li><p>‘nonce’: nonce ：带有从我们地址所发送交易的数量的区块高度</p></li><li><p>‘gas’: estimatedGas ：完成交易预计所需的Gas(燃气费，用量衡量工作量)</p></li><li><p>‘data’:nftContract.methods.mintNFT(PUBLIC_KEY,md).encodeABI() ：我们希望在交易中执行的计算量，在这里则是指的铸造一个NFT。</p></li></ul><p>你的 mint-nft.js file 应该如下所示：</p><pre data-type="codeBlock" text="require(&apos;dotenv&apos;).config();
   const API_URL = process.env.API_URL;
   const PUBLIC_KEY = process.env.PUBLIC_KEY;
   const PRIVATE_KEY = process.env.PRIVATE_KEY;const { createAlchemyWeb3 } = require(&quot;@alch/alchemy-web3&quot;);
   const web3 = createAlchemyWeb3(API_URL);const contract = require(&quot;../artifacts/contracts/MyNFT.sol/MyNFT.json&quot;);
   const contractAddress = &quot;0x81c587EB0fE773404c42c1d2666b5f557C470eED&quot;;
   const nftContract = new web3.eth.Contract(contract.abi, contractAddress);async function mintNFT(tokenURI) {
     const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, &apos;latest&apos;); //get latest nonce
   //the transaction
     const tx = {
       &apos;from&apos;: PUBLIC_KEY,
       &apos;to&apos;: contractAddress,
       &apos;nonce&apos;: nonce,
       &apos;gas&apos;: 500000,
       &apos;data&apos;: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI()
     };
   }
"><code><span class="hljs-built_in">require</span>(<span class="hljs-string">'dotenv'</span>).config();
   const API_URL <span class="hljs-operator">=</span> process.env.API_URL;
   const PUBLIC_KEY <span class="hljs-operator">=</span> process.env.PUBLIC_KEY;
   const PRIVATE_KEY <span class="hljs-operator">=</span> process.env.PRIVATE_KEY;const { createAlchemyWeb3 } <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span>(<span class="hljs-string">"@alch/alchemy-web3"</span>);
   const web3 <span class="hljs-operator">=</span> createAlchemyWeb3(API_URL);const <span class="hljs-class"><span class="hljs-keyword">contract</span> = <span class="hljs-title"><span class="hljs-built_in">require</span></span>(<span class="hljs-params"><span class="hljs-string">"../artifacts/contracts/MyNFT.sol/MyNFT.json"</span></span>);
   <span class="hljs-title">const</span> <span class="hljs-title">contractAddress</span> = "0<span class="hljs-title">x81c587EB0fE773404c42c1d2666b5f557C470eED</span>";
   <span class="hljs-title">const</span> <span class="hljs-title">nftContract</span> = <span class="hljs-title"><span class="hljs-keyword">new</span></span> <span class="hljs-title">web3</span>.<span class="hljs-title">eth</span>.<span class="hljs-title">Contract</span>(<span class="hljs-params"><span class="hljs-keyword">contract</span>.<span class="hljs-built_in">abi</span>, contractAddress</span>);<span class="hljs-title">async</span> <span class="hljs-title"><span class="hljs-keyword">function</span></span> <span class="hljs-title">mintNFT</span>(<span class="hljs-params">tokenURI</span>) </span>{
     const nonce <span class="hljs-operator">=</span> await web3.eth.getTransactionCount(PUBLIC_KEY, <span class="hljs-string">'latest'</span>); <span class="hljs-comment">//get latest nonce</span>
   <span class="hljs-comment">//the transaction</span>
     const <span class="hljs-built_in">tx</span> <span class="hljs-operator">=</span> {
       <span class="hljs-string">'from'</span>: PUBLIC_KEY,
       <span class="hljs-string">'to'</span>: contractAddress,
       <span class="hljs-string">'nonce'</span>: nonce,
       <span class="hljs-string">'gas'</span>: <span class="hljs-number">500000</span>,
       <span class="hljs-string">'data'</span>: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI()
     };
   }
</code></pre><h2 id="h-8" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤8: 签署交易</h2><p>目前我们已经创建交易，现在我们需要对其进行签名才能将其发送出去。现在我们需要用到私钥。</p><p>web3.eth.sendSignedTransaction 会给我们提供交易哈希，我们用它来确保交易被成功执行（确保交易成功被挖矿且没有被网络丢弃）。你会注意到，在交易签名部分，我们添加了一些错误检查，以便我们知晓我们的交易是否被成功通过。</p><pre data-type="codeBlock" text="require(&quot;dotenv&quot;).config()
const API_URL = process.env.API_URL
const PUBLIC_KEY = process.env.PUBLIC_KEY
const PRIVATE_KEY = process.env.PRIVATE_KEYconst { createAlchemyWeb3 } = require(&quot;@alch/alchemy-web3&quot;)
const web3 = createAlchemyWeb3(API_URL)const contract = require(&quot;../artifacts/contracts/MyNFT.sol/MyNFT.json&quot;)
const contractAddress = &quot;0x81c587EB0fE773404c42c1d2666b5f557C470eED&quot;
const nftContract = new web3.eth.Contract(contract.abi, contractAddress)async function mintNFT(tokenURI) {
  const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, &quot;latest&quot;) //get latest nonce
  //the transaction
  const tx = {
    from: PUBLIC_KEY,
    to: contractAddress,
    nonce: nonce,
    gas: 500000,
    data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
  }const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)
  signPromise
    .then((signedTx) =&gt; {
      web3.eth.sendSignedTransaction(
        signedTx.rawTransaction,
        function (err, hash) {
          if (!err) {
            console.log(
              &quot;The hash of your transaction is: &quot;,
              hash,
              &quot;\nCheck Alchemy&apos;s Mempool to view the status of your transaction!&quot;
            )
          } else {
            console.log(
              &quot;Something went wrong when submitting your transaction:&quot;,
              err
            )
          }
        }
      )
    })
    .catch((err) =&gt; {
      console.log(&quot; Promise failed:&quot;, err)
    })
}
"><code><span class="hljs-built_in">require</span>(<span class="hljs-string">"dotenv"</span>).config()
const API_URL <span class="hljs-operator">=</span> process.env.API_URL
const PUBLIC_KEY <span class="hljs-operator">=</span> process.env.PUBLIC_KEY
const PRIVATE_KEY <span class="hljs-operator">=</span> process.env.PRIVATE_KEYconst { createAlchemyWeb3 } <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span>(<span class="hljs-string">"@alch/alchemy-web3"</span>)
const web3 <span class="hljs-operator">=</span> createAlchemyWeb3(API_URL)const <span class="hljs-class"><span class="hljs-keyword">contract</span> = <span class="hljs-title"><span class="hljs-built_in">require</span></span>(<span class="hljs-params"><span class="hljs-string">"../artifacts/contracts/MyNFT.sol/MyNFT.json"</span></span>)
<span class="hljs-title">const</span> <span class="hljs-title">contractAddress</span> = "0<span class="hljs-title">x81c587EB0fE773404c42c1d2666b5f557C470eED</span>"
<span class="hljs-title">const</span> <span class="hljs-title">nftContract</span> = <span class="hljs-title"><span class="hljs-keyword">new</span></span> <span class="hljs-title">web3</span>.<span class="hljs-title">eth</span>.<span class="hljs-title">Contract</span>(<span class="hljs-params"><span class="hljs-keyword">contract</span>.<span class="hljs-built_in">abi</span>, contractAddress</span>)<span class="hljs-title">async</span> <span class="hljs-title"><span class="hljs-keyword">function</span></span> <span class="hljs-title">mintNFT</span>(<span class="hljs-params">tokenURI</span>) </span>{
  const nonce <span class="hljs-operator">=</span> await web3.eth.getTransactionCount(PUBLIC_KEY, <span class="hljs-string">"latest"</span>) <span class="hljs-comment">//get latest nonce</span>
  <span class="hljs-comment">//the transaction</span>
  const <span class="hljs-built_in">tx</span> <span class="hljs-operator">=</span> {
    <span class="hljs-keyword">from</span>: PUBLIC_KEY,
    to: contractAddress,
    nonce: nonce,
    <span class="hljs-built_in">gas</span>: <span class="hljs-number">500000</span>,
    data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
  }const signPromise <span class="hljs-operator">=</span> web3.eth.accounts.signTransaction(<span class="hljs-built_in">tx</span>, PRIVATE_KEY)
  signPromise
    .then((signedTx) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
      web3.eth.sendSignedTransaction(
        signedTx.rawTransaction,
        <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err, hash</span>) </span>{
          <span class="hljs-keyword">if</span> (<span class="hljs-operator">!</span>err) {
            console.log(
              <span class="hljs-string">"The hash of your transaction is: "</span>,
              hash,
              <span class="hljs-string">"\nCheck Alchemy's Mempool to view the status of your transaction!"</span>
            )
          } <span class="hljs-keyword">else</span> {
            console.log(
              <span class="hljs-string">"Something went wrong when submitting your transaction:"</span>,
              err
            )
          }
        }
      )
    })
    .catch((err) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
      console.log(<span class="hljs-string">" Promise failed:"</span>, err)
    })
}
</code></pre><h2 id="h-9-mintnftmint-nftjs" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤9: 调用mintNFT并运行mint-NFT.js节点</h2><p>还记得你上传到Pinata的 metadata.json 吗？从Pinata获取它的哈希码，并将以下内容作为参数传给函数mintNFT https://gateway.pinata.cloud/ipfs/&lt;metadata-hash-code&gt;</p><p>这是我们获取哈希码的操作步骤：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5427e566a10db7301fababdc919988ea2c93af4254a7e5abe7f85f668f77077b.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><em>如何在Pinata上获取你的NFT元数据的哈希码</em></p><p>在一个新窗口加载 https://gateway.pinata.cloud/ipfs/&lt;metadata-hash-code&gt; ，仔细检查你复制的哈希码是否链接到 metadata.json 。</p><p>这个页面应该看起来如下所示：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e9675d3fe74734fd10d2a99acbb1ed85e31eebbf54acdca157d07b32fdca0172.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><em>你的页面会展示json元数据</em></p><p>总而言之，你的代码应该如下所示：</p><pre data-type="codeBlock" text="require(&quot;dotenv&quot;).config()
const API_URL = process.env.API_URL
const PUBLIC_KEY = process.env.PUBLIC_KEY
const PRIVATE_KEY = process.env.PRIVATE_KEYconst { createAlchemyWeb3 } = require(&quot;@alch/alchemy-web3&quot;)
const web3 = createAlchemyWeb3(API_URL)const contract = require(&quot;../artifacts/contracts/MyNFT.sol/MyNFT.json&quot;)
const contractAddress = &quot;0x81c587EB0fE773404c42c1d2666b5f557C470eED&quot;
const nftContract = new web3.eth.Contract(contract.abi, contractAddress)async function mintNFT(tokenURI) {
  const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY, &quot;latest&quot;) //get latest nonce//the transaction
  const tx = {
    from: PUBLIC_KEY,
    to: contractAddress,
    nonce: nonce,
    gas: 500000,
    data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
  }const signPromise = web3.eth.accounts.signTransaction(tx, PRIVATE_KEY)
  signPromise
    .then((signedTx) =&gt; {
      web3.eth.sendSignedTransaction(
        signedTx.rawTransaction,
        function (err, hash) {
          if (!err) {
            console.log(
              &quot;The hash of your transaction is: &quot;,
              hash,
              &quot;\nCheck Alchemy&apos;s Mempool to view the status of your transaction!&quot;
            )
          } else {
            console.log(
              &quot;Something went wrong when submitting your transaction:&quot;,
              err
            )
          }
        }
      )
    })
    .catch((err) =&gt; {
      console.log(&quot;Promise failed:&quot;, err)
    })
}mintNFT(
  &quot;https://gateway.pinata.cloud/ipfs/QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP&quot;
)
"><code><span class="hljs-built_in">require</span>(<span class="hljs-string">"dotenv"</span>).config()
const API_URL <span class="hljs-operator">=</span> process.env.API_URL
const PUBLIC_KEY <span class="hljs-operator">=</span> process.env.PUBLIC_KEY
const PRIVATE_KEY <span class="hljs-operator">=</span> process.env.PRIVATE_KEYconst { createAlchemyWeb3 } <span class="hljs-operator">=</span> <span class="hljs-built_in">require</span>(<span class="hljs-string">"@alch/alchemy-web3"</span>)
const web3 <span class="hljs-operator">=</span> createAlchemyWeb3(API_URL)const <span class="hljs-class"><span class="hljs-keyword">contract</span> = <span class="hljs-title"><span class="hljs-built_in">require</span></span>(<span class="hljs-params"><span class="hljs-string">"../artifacts/contracts/MyNFT.sol/MyNFT.json"</span></span>)
<span class="hljs-title">const</span> <span class="hljs-title">contractAddress</span> = "0<span class="hljs-title">x81c587EB0fE773404c42c1d2666b5f557C470eED</span>"
<span class="hljs-title">const</span> <span class="hljs-title">nftContract</span> = <span class="hljs-title"><span class="hljs-keyword">new</span></span> <span class="hljs-title">web3</span>.<span class="hljs-title">eth</span>.<span class="hljs-title">Contract</span>(<span class="hljs-params"><span class="hljs-keyword">contract</span>.<span class="hljs-built_in">abi</span>, contractAddress</span>)<span class="hljs-title">async</span> <span class="hljs-title"><span class="hljs-keyword">function</span></span> <span class="hljs-title">mintNFT</span>(<span class="hljs-params">tokenURI</span>) </span>{
  const nonce <span class="hljs-operator">=</span> await web3.eth.getTransactionCount(PUBLIC_KEY, <span class="hljs-string">"latest"</span>) <span class="hljs-comment">//get latest nonce//the transaction</span>
  const <span class="hljs-built_in">tx</span> <span class="hljs-operator">=</span> {
    <span class="hljs-keyword">from</span>: PUBLIC_KEY,
    to: contractAddress,
    nonce: nonce,
    <span class="hljs-built_in">gas</span>: <span class="hljs-number">500000</span>,
    data: nftContract.methods.mintNFT(PUBLIC_KEY, tokenURI).encodeABI(),
  }const signPromise <span class="hljs-operator">=</span> web3.eth.accounts.signTransaction(<span class="hljs-built_in">tx</span>, PRIVATE_KEY)
  signPromise
    .then((signedTx) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
      web3.eth.sendSignedTransaction(
        signedTx.rawTransaction,
        <span class="hljs-function"><span class="hljs-keyword">function</span> (<span class="hljs-params">err, hash</span>) </span>{
          <span class="hljs-keyword">if</span> (<span class="hljs-operator">!</span>err) {
            console.log(
              <span class="hljs-string">"The hash of your transaction is: "</span>,
              hash,
              <span class="hljs-string">"\nCheck Alchemy's Mempool to view the status of your transaction!"</span>
            )
          } <span class="hljs-keyword">else</span> {
            console.log(
              <span class="hljs-string">"Something went wrong when submitting your transaction:"</span>,
              err
            )
          }
        }
      )
    })
    .catch((err) <span class="hljs-operator">=</span><span class="hljs-operator">></span> {
      console.log(<span class="hljs-string">"Promise failed:"</span>, err)
    })
}mintNFT(
  <span class="hljs-string">"https://gateway.pinata.cloud/ipfs/QmYueiuRNmL4MiA2GwtVMm6ZagknXnSpQnB3z2gWbz36hP"</span>
)
</code></pre><p>现在运行node scripts/mint-nft.js 来部署NFT。等待几秒，你会在终端中看到如下响应：</p><pre data-type="codeBlock" text="The hash of your transaction is: 0x10e5062309de0cd0be7edc92e8dbab191aa2791111c44274483fa766039e0e00
Check Alchemy&apos;s Mempool to view the status of your transaction!
"><code>The hash <span class="hljs-keyword">of</span> your transaction <span class="hljs-built_in">is</span>: <span class="hljs-number">0</span>x10e5062309de0cd0be7edc92e8dbab191aa2791111c44274483fa766039e0e00
Check Alchemy<span class="hljs-comment">'s Mempool to view the status of your transaction!</span>
</code></pre><p>接下来，访问<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dashboard.alchemyapi.io/mempool">Alchemy mempool内存池</a>来查看你的交易状态（待处理、成功铸造、被区块链网络拒绝）。如果你的交易被拒绝，可以在<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ropsten.etherscan.io/">Ropsten Etherscan</a>中搜索你的交易哈希来查看详细情况。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/de8db66300ddefc73f38dd5d00e91eface282b5916f6eb58b626d52bcc301e93.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><em>在Etherscan上查看你的NFT交易哈希</em></p><p>以上就是全部了！现在你已经在以太坊区块链上部署并铸造一个NFT了！</p><p>你可以用 mint-nft.js 随心所欲地铸造NFT！只要确保传入一个新的描述NFT元数据的tokenURLI即可（否则你就只是制作了拥有不同ID的同一个NFT）。</p><p>也许你还想展示你钱包里的NFT，请查看 Part3教程 — — 如何在您的钱包中查看您的 NFT 吧！</p><h2 id="h-part3-nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Part3. 如何在你钱包中查看NFT</strong></h2><p>在Part3，我们会讲述如何查看我们新铸造的NFT。当然，你也可以使用MetaMask上关于ERC721协议的通用教程，包括主网上和任何测试网络上的。如果你想学如何在以太坊上铸造你自己的NFT，你可以查看本教程的Part1部分。</p><p>恭喜！你来到了本次NFT教程系列中最短最简单的部分 — — 如何在一个电子钱包中查看最新铸造的NFT。因为我们在前两部分使用了MetaMask，这次我们依然用它来举例。</p><p>首先，你手机上需要安装MetaMask，并且已经登陆了你铸造NFT所用的帐户。该应用程序在iOS和Android均免费。</p><h2 id="h-1-ropsten" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤1: 将你的网络设置为Ropsten</h2><p>点击app顶部的「Wallet」按钮后，你便会获得设置网络的提示。因为我们的NFT是在Ropsten网络上铸造的，你需要选择Ropsten。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e7c19d2d0e39a79c3e95866fa07984938ff487c14ca66c02b10b87f40d0e17e0.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-2-metamask" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">步骤2: 将你的收藏品添加到MetaMask</h2><p>当你设置为Ropsten网络后，选择右侧的「Collectibles」栏，添加NFT智能合约地址和NFT的ERC721代币ID，你可以在Part2部分所部署的NFT中，根据交易哈希在Etherscan上找到它们。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/74ea97d6f8328a511316e72e9a37f264f221a1e0c2c6a97a11d4be4ec33f00f3.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>你可能会需要刷新好几次，才能看到你的NFT。别担心，它在那里的！</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f792db21984a7d34072633491f5d9bc009642c00bca371b8131ee363a777c54f.gif" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>恭喜，你已经成功铸造一个NFT，还可以查看它！好了，我们迫不及待地想看看你将如何席卷 NFT 世界！</p>]]></content:encoded>
            <author>shaokui@newsletter.paragraph.com (shaokui)</author>
        </item>
        <item>
            <title><![CDATA[NFT经济学]]></title>
            <link>https://paragraph.com/@shaokui/nft</link>
            <guid>9zMoSPJNAImDpwQjl8gj</guid>
            <pubDate>Thu, 17 Mar 2022 02:36:05 GMT</pubDate>
            <description><![CDATA[MyCryptoHeroes是日本的一款区块链自走棋游戏，算是全世界最早一批的链游，以复杂的经济模型著称，并一度在DappRadar中霸榜，它开创了将区块链的链上所有权和复杂链下活动进行区分的开端。 Opensea的CEO Devin Finzer曾经在发表的官方文章中，推荐了一篇《NFT经济学》，其揭示了MCH在Opensea上拥有如此高销量的秘密。截至2022年3月14日,MCH在Opensea上的交易量为27.2k个ETH，按$2588的汇率折算，约7040美金，合人民币4.47亿。 我们团队的「1a96ff」对它做了翻译，以方便自己和大家的学习。 欢迎关注我们的公众号：观小畜 原文链接： 《Episode 1: Game Ecosystem Design》 《Episode 2: NFT Economics》 《Episode 3: Community Building》 原作者：Michael Arnold。前言打造一个好游戏非常困难，在一个开放经济环境中将会更难。我的系列文章将会说明我们是如何打造了一个引领潮流的区块链游戏项目： My Crypto Heroes。 我...]]></description>
            <content:encoded><![CDATA[<p>MyCryptoHeroes是日本的一款区块链自走棋游戏，算是全世界最早一批的链游，以复杂的经济模型著称，并一度在DappRadar中霸榜，它开创了将区块链的链上所有权和复杂链下活动进行区分的开端。</p><p>Opensea的CEO Devin Finzer曾经在发表的官方文章中，推荐了一篇《NFT经济学》，其揭示了MCH在Opensea上拥有如此高销量的秘密。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d8909a99012e94250985fbb0f7068b8f6c3066b38b002a5a4e051f9dda734c57.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>截至2022年3月14日,MCH在Opensea上的交易量为27.2k个ETH，按$2588的汇率折算，约7040美金，合人民币4.47亿。</p><p>我们团队的「1a96ff」对它做了翻译，以方便自己和大家的学习。</p><p>欢迎关注我们的公众号：观小畜</p><p>原文链接：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@makzent/the-my-crypto-heroes-playbook-episode-1-game-ecosystem-design-7e81d65b4564">《Episode 1: Game Ecosystem Design》</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@makzent/the-my-crypto-heroes-playbook-episode-2-nft-economics-8ad2a939d91e">《Episode 2: NFT Economics》</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@makzent/the-my-crypto-heroes-playbook-episode-3-community-building-96ff58ce21c8">《Episode 3: Community Building》</a></p><p>原作者：<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/@makzent">Michael Arnold</a>。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>前言</strong></h2><p>打造一个好游戏非常困难，在一个开放经济环境中将会更难。我的系列文章将会说明我们是如何打造了一个引领潮流的区块链游戏项目：</p><p>My Crypto Heroes。</p><p>我将会说明，我们如何达到一周约650 ETH的周交易量，为什么每天我们能有6500个在线玩家，以及我们如何达到13000 ETH的一级市场销售额。</p><p>你将会理解我们是如何制定社区的激励机制的，以及为何我们设计了现在的数字资产经济模式。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/98d7ad6cb28713795f88e0e3ff2598b6c5935aa57c202bc054819dd31028b8ca.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>DappRadar Ranking, tracking our on-chain transactions</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>第一章：游戏经济系统设计</strong></h2><p><strong>1.My Crypto Heroes介绍</strong></p><p>我的加密英雄是一个自走棋游戏（auto battler，也称为auto chess，是战略游戏的子类型，当角色放入战场后是自动战斗的，玩家无法直接操控），游戏中有很多英雄和装备，这些都是存储在以太坊这个区块链网络中的唯一资产（使用ERC721协议的代币）。</p><p>由于这些资产是分布式存储在区块链网络中，因此玩家可以随时随地的用以太币进行交易。这就带来了一个有趣经济学挑战：你是如何确保这些资产随着时间的推移而保值的，甚至是随着越来越多的玩家加入这个生态系统而增值？</p><p>这些问题其实非常复杂，但是我尽量以一种简洁和简单的方式进行描述。</p><p>让我们深入浅出吧！</p><p><strong>2.My Crypto Heroes中的资产</strong></p><p>My Crypto Heroes中的资产有英雄、装备以及土地，它们都可以通过游戏币GUM（在游戏内建市场）或以太币（通过OpenSea交易所）进行交易。我会用到「NFT」、「ERC721」和「资产」这3种不同的术语，但它们都代表着具有真实货币价值的唯一资产。</p><p><strong>英雄</strong></p><p>英雄是整个经济体系中最核心的部分，游戏中共计有200个不同类型的英雄（爱因斯坦、拿破仑等等）。</p><p>每个英雄的稀有度不同，根据经验来说：越稀有的英雄越强，用途越多，价值也越高。</p><p>英雄总共有4级稀有度：传奇（20）、史诗（100）、稀有（259）、普通（1000）。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b747feb9b152a3b7970c48d19e53c6ded5f13bb4d17a83b93b2738bf292449f0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>My Crypto Heroes中的英雄</p><p>用户可以通过以下途径购买英雄：</p><p>1）从其他玩家手中使用以太币（在Opensea上）或者游戏币GUM（在游戏内）进行购买；</p><p>2）My Crypto Heroes官方正在拍卖的英雄（我将在第二章讨论我们的拍卖流程）。</p><blockquote><p>英雄一旦被拍卖了，他人只能从拥有玩家处进行购买。所以英雄会升值，这也是为什么我们能在OpenSea上有如此高的交易量的原因。</p></blockquote><p>需要注意的一点是：你拥有更多的英雄，便会做更多的任务，获取装备的机率也就越大，每个月所赚取的以太币/GUM（游戏币）也就越多。</p><p><strong>装备</strong></p><p>装备是My Crypto Heroes中的武器，装备将会在任务中掉落，也能在每周的比赛赢取。装备购买只有一个途径，那就是用以太币（在Opensea上）或者游戏币GUM（在游戏内）从别的玩家那儿进行购买，不能直接从My Crypto Heroes官方进行购买。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4128fcf326fa0e5f578e80c4a309db7c9d7ce9663814efcd5668b3187202e874.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>My Crypto Heroes中的装备</p><p>每个任务都会掉落不同系列的装备，掉落的装备总的数量是有限的。目前来说，每隔90天，任务和装备都会更新，数量也会跟着变化。</p><blockquote><p>一旦不能在任务中刷装备，就意味着只能从拥有它的玩家处进行购买。这个机制确保了装备的升值，这也是为什么我们能有如此活跃的二级市场交易的原因之一。</p></blockquote><p>装备一共有5个稀有等级：传奇、史诗、稀有、少见、普通。每一类的掉落概率不同。根据经验来说：任务越难，掉落稀有装备的概率越大。</p><blockquote><p>这意味着：你的团队越强，任务完成级别越高，越稀有的装备掉落概率越大，每月所赚取的ETH以太币/GUM游戏币就越多。</p></blockquote><blockquote><p><em>备注：每个任务都会掉落一件装备，但大多数都是</em><strong><em>绑定装备</em></strong><em>（类似于WOW中的拾取绑定装备，即拾取了就和你绑定的装备，你不能交易给别人，只能自己用）。绑定装备是“真”装备的复制品，它们无法通过以太币或游戏币进行交易，它们的用途是为了帮助用户在游戏中变强，但并不会影响NTF经济系统。</em></p><p><em>如果你足够幸运，你会捡到‘真’装备，它们是可以通过以太币或游戏币交易的唯一资产。</em></p></blockquote><p><strong>领土系统</strong></p><p>今年早些时候，我们以众筹的形式向用户出售了土地。土地也是基于ERC721协议的代币，能在OpenSea上通过以太币进行自由交易。目前9块土地都已售光，所以想购买土地的玩家只能从别的玩家那里购入了。</p><p>用户在My Crypto Heroes上的每一次交易，土地拥有者（领主）将获得交易费用30%的收入。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/77555e1f9ee25348f518bcce4e5821215bfaf96de8cea586a5399222ea214dcf.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>土地拥有者们可以制定土地收益的分配政策</p><p>游戏中出现了一些有趣的激励政策：Lime的国王为新玩家准备了总价值55个以太币的礼包，Strawberry国王给新玩家提供了非常详尽的攻略百科，Ocean国王为了保持领土的活跃，在每个赛季持续开展大奖赛。你可以在第三章中了解更多细节。</p><h2 id="h-3my-crypto-heroes" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">3.My Crypto Heroes的玩法</h2><p>My Crypto Heroes的游戏设计灵感来源于江户时代的不同阶层：农民、战士、艺术家、商人。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/38a806ec4d5b5846255b7578e1d7fae450bb1db64abd6b05a8f7772db29a83de.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>江户时代的四个角色</p><p><strong>农民</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3e30295f307044d8547b811ba908bac341ed02be6e6d857bb2f1545aa751f749.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>农民的战利品</p><p>农民会通过不断重复的刷任务（原作者用的Grind，但是Farm更准确一些）去搜集原始装备，这些装备可以通过以太币和游戏币进行交易。他们还会将一些低等级的英雄和装备升到高等级后卖掉。他们专注于将自己的时间和热情转换为资产，为经济系统中的新资产（更高级别的资产）提供了稳定来源。</p><p><strong>战士</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a2d22314ed5c3ff3aaed2c4a696c1719c82d139b5aa155379f7b5810de6d8788.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>A weekly Cup with the Baby Dragon rule</p><p>战士们热衷于竞技，不断地参加每周的骑士赛或是夺旗战。在PvP战斗模式中取得胜利，将会获得<strong>装备奖励</strong>（来源于每周杯），如果在其领土中是最高骑士级别的话（骑士：领土里级别最高的称号），还会享有土地收入奖励。</p><p>另一个盈利来源则是通过寻找新的阵容搭配来<strong>创建流派</strong>（Meta，是MMO中的术语，指的最优策略），从而影响这些阵容和配装的市值。战士会为了最好的英雄和装备氪金（花费以太币和游戏币），这也是这些资产一直有需求的原因。战士将自己的技巧和热情投入到资产中。</p><p><strong>艺术家</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/48eadd96c809c09193365e651585a1a1caefeb335acbfffe5e90eb45799a7316.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>用户制作的作品</p><p>艺术家可以上传英雄的个性化定制皮肤（存放在IPFS中(https://ipfs.io/)），以此改变英雄的主动技能和强度参数。类似于《英雄联盟》，玩家可以用游戏币购买皮肤。</p><p>同时，除了从My Crypto Heroes购买皮肤，玩家也可以向其他玩家出售自己创造的皮肤，由此产生了一个以UGC（user generated content），即用户生产内容的P2P交易市场。这也让艺术家们将自己的热情转化为了资产。</p><p><strong>商人</strong></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cf04044430aefb53ab4120dc257337c492da75bf6f43e00d009709a0a0e1242c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>In-Game Market to trade with GUM, the in-game currency</p><p>My Crypto Heroes中的英雄和装备，是区块链游戏市场中最具流动性的资产。倒爷们只要把握好时机，可以通过买卖资产赚取利润差。他们从农民处便宜购入的装备，并在下一次大型赛事前卖给战士。这对我们来说就好比WOW的游戏装备和CS:GO的皮肤可以自由买卖了。</p><p><strong>总结</strong></p><p>游戏经济体系、任务设计、比赛奖励以及英雄销售的体系架构，像一台拥有精密机械构造的机器，它们能够保障唯一资产的价值。它的细节相当复杂，详见下面图：</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/475b50877782f99e5dda37d6ffd602af0b3121aeeb3a5333863b8bcc7b635007.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The Ecosystem of My Crypto Heroes</p><p>如果你有兴趣了解更多关于经济系统的细节，可以阅读下一章节。</p><h2 id="h-nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>第二章：NFT经济学</strong></h2><h2 id="h-1my-crypto-heroes" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.My Crypto Heroes生态系统</h2><p>游戏经济体系、任务设计、比赛奖励以及英雄销售的体系架构，像一台拥有精密机械构造的机器，它们能够保障唯一资产的价值。我们对于My Crypto Heroes所做的每个决定，都需要围绕一个核心问题：</p><blockquote><p>这个举动会如何影响用户所拥有的资产价值？</p></blockquote><p>每一次的更新、每一个新英雄、每一个新任务、每一次比赛、每一次打副本、每次与其他公司的合作，以及公司的每个新的项目都必须先回答这个问题。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c0fc1c97a0d41bd0b461bfa560d01bb6ee295c53883a09eae36e35639f7896c7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>OpenSea Ranking on Nov 11th 2019</p><h2 id="h-2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.经济生态系统设计</h2><p><strong>强力玩家的花销</strong></p><p>目前，最便宜的英雄交易价格大约是0.22 ETH(~$35.72)，最便宜的装备大约在0.01 ETH (~$1.62)。</p><p>最贵的英雄（Einstein）交易价格约53 ETH (~$8,599)，最贵的装备约17.5 ETH (~$2,840)。</p><p>让我们看看不同的用户组是如何划分的，以及如何从初学者晋升到能投资传奇英雄的专家。</p><blockquote><p><em>想要做任务或参赛的队伍需要拥有3个英雄和6件装备</em></p><p><strong><em>免费玩家（初始英雄）</em></strong></p><p><em>每位玩家初始都会获得3个免费英雄，这些英雄最高可升至40级。玩家不断做新手任务收集足够的游戏币，这些游戏币可用于买原始的NFT英雄。这类玩家无法做任务以外别的事情（他们在PvP比赛中不具有任何竞争力）</em></p><p><strong><em>初级玩家（任务和最低等级赛事）</em></strong></p><p><em>这类玩家开始购买最便宜的英雄和最便宜的装备，价值分别约0.22eth和0.01eth。在下游组成一个相对较弱的团队需要花费约117美金。在此类团队中可以做任务，也可以参与PvP比赛，但是获胜的几率很小。</em></p><p><strong><em>中级玩家（在中等级别赛事中具有竞争力）</em></strong></p><p><em>稀有英雄交易价格在0.5eth左右，稀有装备交易价格约在0.1eth。每个队伍平均花费341美元，在下游中能很轻松地获胜（获胜者将会获得原始装备）</em></p><p><strong><em>高级玩家（在高等级别赛事中具有竞争力）</em></strong></p><p><em>很强的史诗英雄交易价格约3eth，史诗装备约0.8eth。花费2241美元，便能在蓝龙杯中组成一个胜率非常高的团队（史诗或低等级英雄/装备作为奖励）</em></p><p><strong><em>顶极玩家（在最高级别赛事中和土地争夺战中具有竞争力）</em></strong></p><p><em>最强的传奇英雄交易价格约25eth，传奇装备交易价格约5eth。花费约8932美元（按现在1ETH=2500美元换算，大概要花1.2万+美金）便能无敌（获得最好的奖励）</em></p></blockquote><p><strong>为什么要创造如此“昂贵”的资产？</strong></p><p>首先，定价并不是由My Crypto Heroes的开发团队制定的，价格是由玩家们来决定。</p><p>在游戏刚开始的前几个月，传奇英雄的价值从约5eth上升到了35eth。这对于早期参与者和帮助我们的人来说，是非常高的投资回报率。</p><p>我们是出于升值的目的来设计资产的供给：My Crypto Heroes经济系统核心在于极其稀缺的供给。与源源不断的资源或发行大量的英雄不同，我们让整个体系稀有但又不会过度稀有。</p><p>这样做的结果便是：高价值资产。观察OpenSea的每周排名不难可以发现，资产的平均价格在区块链游戏生态环境中，是一个非常有用的衡量标准。理由便是：</p><blockquote><p>高价值资产创造了流动性市场</p></blockquote><p><strong>一个小案例</strong></p><p>假设你往My Crypto Heroes中投资2eth。你就可以组成2–3个完整的团队，你可以参加夺旗赛，也可以去刷装备。</p><p>不管怎么样，你会慢慢开始关注阵容搭配。</p><p>让我们假设你最终找到了合适流派，并准备买宝嘉康蒂公主这个稀有英雄，以便在稀有或更高等级英雄类型的限定赛中获胜。</p><p>因为你想把预算控制在2 ETH内，你就准备卖掉自己其中一个或多个英雄去买宝嘉康蒂公主。</p><blockquote><p>这意味着：无论什么时候，玩家想改变团队阵容，就需要在市场上交易英雄。因此，高价值资产也带来了二手市场的高交易频率，反之二手市场的交易费用也会更高。</p></blockquote><p>这便是我们能在OpenSea的交易量排行榜上排名靠前的原因。如果没有激励让玩家交易英雄和装备的话，日活玩家总量也就不重要了。<strong>高价值资产是活跃二手交易的关键。</strong></p><p><strong>英雄首发拍卖</strong></p><p>在My Crypto Heroes中，新英雄进入英雄需要通过市场拍卖。每个英雄拍卖都从一个指定拍卖价开始，成交价基本是前一场拍卖中同种稀有类型英雄拍卖价的一半。</p><blockquote><p><em>不同于英雄，一级拍卖市场不会出售装备，每件装备都是通过做任务或赢得比赛获取。因此装备只能从他人手上购买。</em></p></blockquote><p><strong>英雄的拍卖核心机制</strong>：</p><ul><li><p>一个新的英雄每次被售出，价格都会有一点上升。</p></li><li><p>如果5分钟后仍然没有成交的话，这个英雄的价格便会下降一点。</p></li></ul><p>这个机制在拍卖会中创造了<strong>合理的市场价值</strong>。玩家可以直接从My Crypto Heroes为期2周拍卖会上购买英雄。<strong>一旦拍卖会结束，英雄只能从其他玩家手上购买</strong>。这保证了通过官方拍卖渠道售卖的英雄总量等同于英雄的总供给量。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b938f325890efbd27a173754e291331a71cd8ab6f421d313a910d5d9eee1455b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Sales Auction of the Uncommon Hero Montgomery — capped supply: 1000</p><p><strong>让英雄发挥作用：任务体系</strong></p><p>类似于如何计算股票所获股息，NFTs可通过玩家在游戏中所获得的回报来估算预期回报收益。</p><p>英雄的价值就是做任务、周赛杯和土地争夺战的预期（长期的）回报收益的净现值。</p><p>这是否让你感到疑惑？让我来为你解释这其中的含义。接下来我们会提到Stamina、Crypto Energy、TOKU。</p><p><strong>Stamina</strong></p><p>Stamina是能量值。每个英雄都有能量值，在每关任务中能量值都会被消耗。能量值需要时间来恢复。每个英雄每天的任务是有限的。越稀有的英雄，能量值越高。</p><p><strong>Crypto Energy（CE）</strong></p><p>CE就像是其他游戏里的XP，每次做完任务，英雄和装备都能获得CE，随着等级的提升，英雄也会变得越强。任务难度越高，每次任务所消耗的能量值越多，完成任务后你英雄和装备所获得的CE也就越多。</p><p><strong>TOKU</strong></p><p>TOKU值就像My Crypto Heroes里的积分系统。</p><p>玩家可通过以下方式获取TOKU值：</p><p>1）消耗英雄或装备的CE值来换取TOKU值</p><p>2）售卖刷到的仿制装备（Replica=仿制装备，指的是真实装备在链下的复制品）</p><p>通过积累TOKU值，玩家可以获得游戏内的游戏货币GUM（链下货币），游戏货币可以购买真实的英雄和装备，而这些东西又可以在OpenSea上用以太币进行交易。</p><p>你可以把它看作“**Proof of Play”**共识机制。TOKU值会随着玩家在游戏中投入的英雄和装备数量增多而增加。</p><p>因为给予了玩家稳定的“<strong>收入</strong>”，所以英雄和装备也就拥有相对<strong>更高的价值</strong>。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2a361f29fd2feca8a8275a182ab5c1848e85f2d248a210f1cac4b97693e8228f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>On Overview of the TOKU Rewards</p><h2 id="h-nfts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">NFTs预期回报的净现值</h2><p>如同上述所提，NFT类似于股票收益，游戏中的收益，就像NFT投资的利息。</p><p>下面是My Crypto Heroes中的回报类型：</p><p>1）TOKU奖励（获得游戏币、绑定装备、绑定英雄）</p><p>2）任务掉落（获得CE值、绑定装备、装备）</p><p>3）比赛奖励（获得装备）</p><p>4）土地争夺站（获得游戏币）</p><p>5）…等等</p><p>让我们假设，你用2个eth组建了2个团队，<strong>每个月可获得1–2个装备</strong>，以及足够的游戏币（来源于TOKU奖励），这些游戏币可以在市场上再购买至少1个装备。</p><p>那么每个月的回报总共是3 x 0.01 ETH =0.03 ETH（约4.86美元）。</p><p>换算成一年，2个ETH的投资回报约为0.36 ETH，每年约18%的投资收益。</p><p>你的钱会以这种很好玩的方式动起来。</p><p><em>译者注：</em></p><p><em>当然，前提要有足够多的玩家在玩，但是通常游戏是有生命周期的，这个游戏目前的活跃度译者并未进行考证，因此请大家理性对待投资。</em></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>第三章：社区建设</strong></h2><h2 id="h-1" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1.社区为王</h2><p><strong>建立一个社群</strong></p><p>在My Crypto Heroes发布几个月后，我们出售土地给社区，获得共计约5000eth的收入。</p><p>土地售卖分为2个部分：私有销售（4块土地）和公开销售（5块土地）。</p><p>在私有销售过程中，我们与非常活跃的社区成员洽谈并且直接把土地卖给了他们。直到今天，他们仍是My Crypto Heroes社区活跃强大的主要原因。</p><p><strong>Strawberry国王：Fao</strong></p><p>Strawberry国王Fao，是My Crypto Heroes最著名博客的作者，他给My Crypto Heroes写了非常多极高质量的攻略。他定期给日本社区发布英雄等级名单，PvP比赛的阵容搭配分析和关于我们公司的新闻。</p><p>我们为了感谢他的参与，也创造了一个<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/mycryptoheroes/raid-fao-en-c0c3dfba4eca">社区事件</a>。</p><p><strong>Lime国王：YamaP</strong></p><p>YamaP是日本Crypto社区非常活跃的玩家，也是My Crypto Heroes中最强的玩家之一。为了让更多人加入他的土地“Lime”，他与TokenPocket合作，组织了一个55eth有奖问答节目来吸引新玩家加入：他给每个注册了「My Crypto Heroes」app的新用户0.01eth。</p><p><strong>Ocean国王：⛹️</strong></p><p>⛹ 先生是My Crypto Heroes中唯一一位非日本人的国王。他让Ocean成为了国际社区，并精心设计了有奖赛让成员积极互动。</p><p>每个赛季（大约1个月时间），他都会组织一场PvP有奖比赛，参赛者能够获得购买赛季特殊英雄。</p><p>最近，⛹ 和玩家⚡CrypτØGeeK⚡合作，为大家提供装备升级服务。这场服务由⛹ 提供5eth的担保。这就像权益证明和民间担保的结合。</p><p><strong>激励机制</strong></p><p>你现在可能会好奇：为什么这些土地拥有者（领主）会投入如此多时间、金钱和精力在My Crypto Heroes？</p><p>我们将我们收入的30%返回给领主</p><p>每一个玩家在开始玩的时候，都会加入一个土地。玩家每次在游戏中通过eth交易时，玩家所在土地的领主都会获得交易费用的30%。</p><p>总结来说：Ocean土地的公民用eth购买游戏币，⛹和其他Ocean领主都将获得交易费用的30%。</p><p>这便让领主主之间为了吸引更多玩家，产生了竞争。这便是为什么，Fao通过发布文章来活跃社区，YamaP通过55eth有奖问答为Lime吸引新玩家，⛹每月奖励Ocean最活跃的玩家。</p><p>土地本身是基于ERC721协议的代币，可以在OpenSea进行交易。我们觉得将土地出售给活跃的玩家，是激励他们为社区不断创造价值的关键。</p><p>当然，这取决于土地卖给了谁，就像是你在创业初期时从VC处筹钱时的smart money，你需要从土地投资者那里获得除了投资以外的smart money来积极建设社区。</p><h2 id="h-2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2.线下事件和运动</h2><p>除了建设线上社区，打造一个本地的微型玩家社区也很重要。幸运的是，我们大部分的活跃玩家都在东京，线下的见面会有非常棒的氛围。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/834d4ec496bef8b6fd8d5f691bcc2d7684215da12166e0d93beddd9ca6c194c2.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Public Viewing of the Land Battle Finals in Odaiba, Tokyo</p><p>除了讨论夺旗赛(PvP模式中最激烈的比赛）最佳策略外，玩家们现实生活中交往也非常愉快。想象一下，在一块巨幕厅前，你的1w美元团队与别的1w美元团队的激烈的对抗着，而周围充斥着鼓劲的欢呼声。这里，还有这里都是一些就是今年在东京举办的活动。</p><h2 id="h-3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">3.创造激情和新体验</h2><p>与任何其他新的娱乐一样，区块链游戏旨在以你从未体验过的方式激发你的兴趣。继我们在东京的现场竞赛取得成功后，我们将于 2020 年 1 月举办我们的第一场电子竞技锦标赛！</p><p><strong><em>译者注：</em></strong></p><p><em>作者没有介绍详细的领土系统，而领土系统是游戏中重要的设定，作为奠基者，MCH这一设定影响了后续很多链游和NFT项目的赌局玩法。我在这里增加一些内容对其进行简介：</em></p><p><em>领土一共有9块。销售分为两个类别：私有预售和公开销售。</em></p><p><em>预售的地块一共有四块，领主基本上都是一个人，他可以500ETH的价格全盘购买；</em></p><p><em>公开销售的土地共有五类，会分割进行销售，土地的所有权是分散在这些玩家手中。每一块分割数量和价格都不同（见下图），玩家用可以用游戏币GUM进行付款。</em></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f7cb94972d1d96c95f149309e0099a88e69a082a761286b265bc73cdc74b619d.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><em>预售时如果申请的玩家多则会使用抽签的方式进行拍卖，如果玩家少，四块土地都没有拍出的话，剩余的土地将会放入公开销售中进行分割销售。</em></p><p><em>购买土地的玩家将成为领主，而占有率超过总量10%的前三名玩家将成为该国的国王，领主将会根据自己所占的土地份额，分配到土地收益的30%，这些土地收益包括领土所属玩家进行交易时支付的ETH或者是游戏币。当然游戏中的资源也是依据阶层对玩家进行层层分配，类似于庞氏中的金字塔。</em></p><p><em>这令我想到这几年流行的沙盘游戏，例如三战，其出生州完全可以进行公开发售，通过投入的资金决定君主和官员，由他们制定策略来吸引玩家加入，共同争抢中立领土的资源，并最终在赛季中占领洛阳。</em></p><p>我们计划在近期输出一些关于Crypto和NFT的内容，欢迎大家和我讨论！我的微信：zeehkhaze</p>]]></content:encoded>
            <author>shaokui@newsletter.paragraph.com (shaokui)</author>
        </item>
        <item>
            <title><![CDATA[畅聊NFT(1)：概念、机制和历史]]></title>
            <link>https://paragraph.com/@shaokui/nft-1</link>
            <guid>EsZwxXZkcrmEag91FqWR</guid>
            <pubDate>Thu, 17 Mar 2022 02:34:19 GMT</pubDate>
            <description><![CDATA[​Beeple基于NFT的作品《Everydays: The first 5000 days》Beeple基于NFT的作品《Everydays: The first 5000 days》 2021年3月11日在佳士得以6935万美金卖出 即便是不关注NFT，相信上面一张图你或多或少也见过了，或者你道听途说了某某朋友在国内数字藏品的造富奇迹，亦或是在今年刚开年听到周杰伦的幻影熊（Phanta Bear）亮相就卖出7000万美金的消息。 虽然随着加密货币的熊市，NFT也颇有几分围城的味道，加上跑路的项目和团队频频出现，NFT是否会归零的争论也从未停息。 但就在几天前，我刚开始撰写这篇文章后，以Meebits项目为首，市场迎来了一波暴涨，交易量激增1500%。没错，Meebits就是传奇项目CryptoPunks的团队Larva做的立体版加密朋克。市场FOMO情绪空前高涨，你可能感兴趣或者是想参与其中，毕竟我们谁也不希望当浪潮过去的时候感到后悔，即便它可能是个骗局。 但是网络上的信息太过碎片化，也充斥着一些失真的信息。 那么从今天开始，我就来和大家聊一聊NFT。 因为内容比较多，我会分...]]></description>
            <content:encoded><![CDATA[<p>​</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9ccd1bca2614bbb39838159aba3c7f179e8ce2ba6037eac6521ea1994ab1952a.jpg" alt="Beeple基于NFT的作品《Everydays: The first 5000 days》" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Beeple基于NFT的作品《Everydays: The first 5000 days》</figcaption></figure><p>Beeple基于NFT的作品《Everydays: The first 5000 days》<br>2021年3月11日在佳士得以6935万美金卖出</p><p>即便是不关注NFT，相信上面一张图你或多或少也见过了，或者你道听途说了某某朋友在国内数字藏品的造富奇迹，亦或是在今年刚开年听到周杰伦的幻影熊（Phanta Bear）亮相就卖出7000万美金的消息。</p><p>虽然随着加密货币的熊市，NFT也颇有几分围城的味道，加上跑路的项目和团队频频出现，NFT是否会归零的争论也从未停息。</p><p>但就在几天前，我刚开始撰写这篇文章后，以Meebits项目为首，市场迎来了一波暴涨，交易量激增1500%。没错，Meebits就是传奇项目CryptoPunks的团队Larva做的立体版加密朋克。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e671c596bf3e1375f0dace19637e68a6c220033f5d77a83442ed5157808b1e44.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fb0e0106a60851b259dfc711a5b98bd6741f8215501f215d6fe5c3a89de6b8fe.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>市场FOMO情绪空前高涨，你可能感兴趣或者是想参与其中，毕竟我们谁也不希望当浪潮过去的时候感到后悔，即便它可能是个骗局。</p><p>但是网络上的信息太过碎片化，也充斥着一些失真的信息。</p><p>那么从今天开始，我就来和大家聊一聊NFT。</p><p>因为内容比较多，我会分若干个章节，今天的这一章我会给大家解释概念，我造了一些词帮助大家区分和理解NFT，同时我尝试介绍NFT的一些历史，他们创造的玩法被后来很多诈骗项目借鉴，大家可以分享给身边热衷追高、喜爱投机的朋友们，避免他们再次踩坑。</p><p>我的计划是讨论以下内容，但是因为时间和市场关系可能会有一些变动：</p><p><em>01.NFT是什么？</em></p><p><em>02.NFT的历史</em></p><p><em>03.NFT是怎么制作、发行和交易的？</em></p><p><em>04.NFT的现在和头部项目盘点</em></p><p><em>05.怎么样购买NFT，有哪些社群值得关注？</em></p><p><em>06.NFT为什么会有价值？</em></p><p><em>07.国内的”数字藏品”也是NFT吗？</em></p><p><em>08.启发和创新探讨</em></p><p>….</p><p>开始之前，我们先看看市场的数据，方便让你对这个东西有一个大致的印象。现在对于里面提及的内容不太明白也没关系，之后我会详细介绍。</p><p>根据DappRadar的数据披露，Opensea的交易量已经达到235亿美金。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0da42ab7387a5777154bba1803520ea4a0b5b5a43b3e31d3685acd17ea355f46.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>排行第二的交易所Looksrare，因为当前薅羊毛奖励导致大量的wash trading，所以我们暂时忽略，因为如果你查看transactions就会发现他们交易次数不是一个量级。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/51241e9389743321a13c561418f0933b6c24104ff87258e5c908eddb668bd115.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>从opensea的交易量数据看，尽管进入<strong>2022年2月份</strong>以后有所<strong>下滑</strong>，但是NFT仍然在其高速发展周期内。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c240910d4df0a44eb15acce5f6192c1340f6c7e3d69ab370cf3cf57a93044b4f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>那我们开始吧！</p><h2 id="h-01nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>01.NFT是什么？</strong></h2><p>NFT（Non-Fungible Token,非同质化代币）是数字文件的所有权凭证/证书，这个数字文件可以是一张图片、一份音频、一段视频、也可以是一个3D模型，甚至可以是一个域名等等。</p><p>这个证书不是某个机构给你发的，而是基于<strong>区块链</strong>在分布式的账本上建立的一段不可篡改的加密数据。</p><p>它依然是一个加密代币，只是和比特币这类等加密货币不同，它不能和其他NFT进行兑换，但是你可以在公开市场使用加密货币进行交易。</p><p>非要我取个名字的话，就叫它“<strong>加密虚拟商品</strong>”，或者<strong>加密数字资产</strong>吧。</p><p>要弄懂NFT，必须先搞清楚区块链。</p><p>关于区块链，网上已经有了很多解释，但是最好的版本来自以太坊的官方文档，这份文档将区块链描述为一个公共数据库，它需要网络中的许多计算机共享和更新。</p><p>区块链网络是分布式的，特点就是去中心化，这个术语可能有人不理解，我打个比方：</p><p>电驴和早期的迅雷这类工具可以让你通过互联网从别人的电脑上下载电影等资源，当你获取后，别人就可以从你的电脑上去下载，那么你们就构成了一个Peer to Peer(P2P)网络，资源不是存在某个特定人的手中的而是存在整个网络中，所以又叫“去中心化”。</p><p>详细一点说，区块链这个名字是其结构的形象解释：“区块”指的是数据和状态是按顺序存储在“区块”中，这些区块是被链接在一起的，“链”指的是每个区块加密会引用其上一个块。</p><p>已经存在的区块数据是无法改变的，但增加后续区块需要整个网络的共识，即网络中的每台计算机都必须就每个新区块和链的内容达成一致。</p><p>这些计算机被称为“节点”。节点保证所有与区块链交互的人都有相同的数据。要完成此分布式协议，区块链需要一个共识机制。</p><p>比如，以太坊目前就是使用<strong>工作量证明 (PoW)</strong> 作为共识机制。</p><p>任何人想要在链上添加新的区块，就必须向网络发出一个计算请求，计算完成后新的区块就会被广播到网络中进行查验，最后网络中所有节点都会更新状态。</p><p>计算请求需要花费算力资源来解决，<strong>这就意味着你写入数据需要向网络支付手续费</strong>，这笔钱会给到最终验证计算、执行计算并完成广播的节点。</p><p>花费算力资源解决问题的操作被称为挖矿，成功添加区块后会得到**代币（Token）**奖励。代币存在的目的是制造一个算力市场，通过经济激励，让网络中的节点提供计算资源。</p><p>当然，ETH（以太币）不仅仅是以太坊网络中的Token，它是流通的，截至3月5日，市场中的价格约为2680美金。为了和Token区分，我们通常把拥有流通价值的代币称为Crypto，即加密货币。</p><h2 id="h-02nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>02.NFT发展历史和标志性项目</strong></h2><p>NFT作为代币，是怎么成为商品的？这可以从非同质化这个字面意思理解，但是这事情要说清楚，就必须从以太坊开始讲起。</p><p>2013年，受比特币的启发，维塔利克·布特林（Vitalik Buterin,最为知名，很多人叫他V神）发布白皮书，向社区发起募捐，计划建立一个新的区块链。</p><p>接着他与格林伍德（Gavin Wood）、查尔斯 · 霍斯金森（Charles Hoskinson）、安东尼 · 迪 · 约里奥（Anthony Di Iorio）和约瑟夫 · 鲁宾（Joseph Lubin）共同创立了以太坊（Ethereum）。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/96e487d8b777bf97e176b0b8bc244982a7cd8c186a260ea6dc9d635aa032d6c0.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这是一个开源的、去中心化的、有智能合约功能的公共区块链网络。以太坊是全世界使用最多的区块链，它最重要的技术贡献就是智能合约，基于此，开发者可以在以太坊上构建新的应用程序。</p><p>开源和去中心化的属性给了大家信任，于是人们纷纷基于以太坊进行创新，摸索各种应用场景，从去中心化的赌场、游戏、金融、下一代网络等等一应俱全，这些项目普遍有一个共同点：项目方用以太坊发行了代币，并以此去募集资金。</p><p>由于使用以太坊的智能合约，可以很方便地创建自己的代币，这就大大降低了募集资金的门槛。项目方写一份白皮书，定好规则，就可以去ICO了（Initial Coin Offering,首次公开数字货币众筹）。</p><p>接下来，人们可以用以太币兑换项目方的代币，期待着代币进入数字货币交易所后升值。</p><p>但是由于缺乏监管，骗子也像雨后春笋一般冒出来，毕竟谁不想持有一只百倍币呢，人性的贪婪给了骗子们剥削的机会，于是经历各种割韭菜和跑路项目后，ICO就被妖魔化了。</p><p>这是题外话，总之你要记住的是，智能合约是NFT的基建设施。</p><p>让我们回来：那么代币是怎么变成一种商品的呢？</p><p>这就不得不说NFT运动的创始项目「加密朋克」了。</p><h2 id="h-cryptopunks" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>加密艺术品浪潮的开端：CryptoPunks</strong></h2><p>时间来到2017年6月23日，这被广泛认为是这场加密艺术品浪潮的开端，这一天Larva Labs发布了CryptoPunks。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f0722a280958bca08f617f1409a96b3934f38ae454055548321e8c93ffa51e17.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>2017年初Larva Labs的创始人Matt Hall和John Watkinson做了一个程序“像素角色生成器”，在接触区块链后，他们使用区块链网络来存储了1万个24x24像素头像，当时以太坊只有ERC20协议，于是他们还增加了一些功能以让头像能代表单个且唯一的代币，在增加了交易功能后，Cryptopunks就成为了以太坊上第一个艺术收藏类NFT项目。</p><p>2017年7月，比较特别的头像多数以8或10ETH的价格出售（当时1以太币的价格约为290美元）。</p><p>截至2022年3月5日，这些图片的底价为68.9个以太币（18万美金），总市值为68.8万以太币（18亿美金）。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2b2407705d059705752b0cb854913f869b40dfdb158e9e9e7bfe4c7c835d2c14.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-cryptokittiesnft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>CryptoKitties以“收藏玩法”传播NFT概念</strong></h2><p>2017年以太坊发布了DAPP（分布式应用），社区开始试验各种去中心化应用程序场景。DAPP的核心在于应用了智能合约，运行在区块链网络中，去中心化特征使得它不受任何人控制。</p><p>年末，以太猫（CryptoKitties，官方翻译是谜恋猫）面世，收藏玩法+游戏化的病毒增长机制使得NFT的概念得以快速传播。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0c81222fb7042b234ce39df308b2921aeb46129da1db9eaf2a2ef29c7ad2bda0.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>在以太猫这个游戏中，每一只猫咪都拥有独一无二的基因组，这决定它的外观和特征。玩家可以收集和繁殖喵咪，创造出全新的猫并解锁珍稀属性。通过游戏获取的的猫，就是NFT了，你可以存在钱包中，也可以在交易所中进行出售。CryptoKitties传播了NFT的概念，并让大家看到了区块链的收藏类应用是具备可行性的。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f7555f378c3e8899d078441edc0da0d5a5b678db37898c4c7d9de7caa4e16b1b.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7ad1ed4d8ac96c0e20939282681f16cd61c6b8c525bef5e888b68855cf937cbc.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>目前在Opensea中查询到总市值为70.5K的ETH，这个项目还在透过新浪微博、微信公众号和qq群进行本地化运营，QQ群约1400人，以90后为主。</p><h2 id="h-ethermon" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>以太妖怪（Ethermon）丰富收藏玩法</strong></h2><p>从名字上看就知道是致敬了宝可梦/口袋妖怪/比卡丘（Pokemon），早期使用庞氏敛财，由Etheremon更名为Ethermon后，变成了进行收集、养成、交易、探索、对战的游戏，当然，还有一大卖点是“从资产中获利”。</p><p>经过这几年的发展，它发行自己的加密货币，还可以在Decentraland的metaverse（元宇宙）这类虚拟世界中上体验到3D版。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/27cecd3d1bbabf7a46b9cb9ad77e5a8f649fa79c7e1e7b9156fd434d536985a4.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac5ee4b425b4e7fac0a40caffe10160b422c9fd975649e24bfe63a40725f35c8.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>接下来，一批集各种玩法的项目集中出现，虽然有些并不属于NFT，但是这些游戏玩法（Gamification）正逐渐被当下的NFT所应用，有的是现象，有的变为趋势，所以我在这里顺便一起聊。<strong>再次强调，这类项目都充满着极大的风险！</strong></p><h2 id="h-mycryptoheroes" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>MyCryptoHeroes交易量霸榜</strong></h2><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/78d9d2a1ecbbb2142143fc476546367a32c13f35410cb408c73045fe90202eba.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/98d7ad6cb28713795f88e0e3ff2598b6c5935aa57c202bc054819dd31028b8ca.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这个日本的自走棋是最早将链上所有权和更复杂的链下活动结合起来的游戏。玩家可以在游戏中使用他们的英雄，当他们想要在二级市场上卖英雄的时候，就把英雄转移到以太坊。</p><p>Opensea的CEP推荐了一篇关于MCH的经济系统的文章，揭秘了其在opensea如此巨大交易量的的秘密，感兴趣的可以看我发布的翻译：</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://mp.weixin.qq.com/s?__biz=Mzg4NzE1ODYyNQ==&amp;mid=2247483845&amp;idx=1&amp;sn=667dfc859bf94a62d178f8494a215eaf&amp;chksm=cf8fe3cbf8f86add8ebaf2339e35715d918dbaba1ecd54b0926ca485a3e17812969d745d4c97&amp;scene=21#wechat_redirect">NFT经济学@我的加密英雄</a></p><h2 id="h-cryptocelebrities" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>加密名人CryptoCelebrities的接盘赌局</strong></h2><p>2018年1月，一款基于以太坊的去中心化卡牌赌局游戏上线，这种玩法被称为Hot Potato，这个名字源自欧美的聚会游戏，和中国的“击鼓传花”类似。</p><p>玩家在网站中可以购买名人的卡牌，一定时间后卡牌会自动涨价，接盘玩家可以继续购买然后再循环。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2ba48f29549eb64a15a9f780880d052fbb84e8d745dd000a4d8c99cae88d99cc.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3f2225a46424d4c9a1251c770c830cb4ada36c2f68d96eae92de6d89dc7393c6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>项目上线几个周后，交易额就达到3.1万以太币，团队赚取了6%的手续费，但是在2018年3月，但可能是因审查和漏洞风险等原因，项目团队在社群讨论后决定下线，这一操作使得最后进场的玩家没有办法收回投资。</p><p>资本市场本来就凶险，再加上大量的山寨游戏进场收割，他们有的在代码留后门，开盘后拿着玩家筹码跑路，更有甚者让你在游戏内导入私钥，直接将你钱包的钱转走，这些乱像大大打击了市场的热情。</p><h2 id="h-fomo3d" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>FOMO3D赌局</strong></h2><p>同一时期的还有FOMO 3D（简称F3D），典型的庞氏骗局（传销/老鼠会/金字塔营销），他们为后来国内众多的网络诈骗提供了智力支持。</p><p>但是F3D会直接告诉你，我就是个骗局，因此它看上去更像是一场测试人性的游戏，因为游戏中透露着骗局的明显暗示：</p><p>首先游戏名字Fear Of Missing Out，意为错失恐惧。FOMO这个术语是由Patrick J. McGinnis于2004年在Harvard商学院杂志《The Harbus》上提出。就是常说的宁愿错投，也不能错过，但是大多数人会因为FOMO买入股票，也会因为FOMO卖出股票导致亏损。我觉得和“韭菜”有异曲同工之处。</p><p>他的域名是exitscam.me，意思是卷款潜逃。</p><p>邀请好友时的提示语“BAD ADVICES坏建议”。</p><p>进入游戏之后会有警告“WARNING:THIS PRODUCT IS HIGHLY ADDICTIVE.IF YOU HAVE AN ADDICTIVE NATURE.DO NOT PLAY警告:这是一个高度沉迷的产品，如果你易沉迷，别玩”。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/414ba879c3b58d0c269557bfde78e8bb9a1843896e2e409aabfdea379d825dd6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>这个赌局游戏和击鼓传花的规则刚好相反，击鼓传花是最后一个倒霉，而FOMO3D是最后一个人中奖，即大家在规定时间内购买钥匙，游戏结束时，最后一个购买钥匙的人可以拿走奖池内的所有奖金。</p><p>它创造了一系列规则，比如不同周期，比如划分队伍等，但是核心规则如下：</p><p>1.游戏开始自动倒计时24小时，倒计时至0，则游戏结束； 2.玩家可以购买钥匙，每购买一个钥匙，增加倒计时30S，但上限不会超过24小时；</p><p>3.钥匙的价格随买入者的增多而增加，但钥匙不能交易，只能用来分红；</p><p>4.购买钥匙花费的ETH，其50%流入奖金池，另外48%分配给持有钥匙的玩家（庞氏的精髓，前期参与者的收入来自后期投资者的投资），2%贡献给社区； 5.游戏倒计时至0，游戏结束，最后一个购买钥匙的人，可拿走奖金池内的所有钱。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>数字艺术进场，市场稳步发展</strong></h2><p>在经过一轮炒作周期后，NFT进入到冷静期，并开始建设基础设施。</p><p>这个时候艺术界开始关注NFT，他们认为数字艺术非常适用于加密代币所能提供的各种场景。我们通常把数字艺术品通常称为<strong>CryptoArt</strong>，但是遗憾的是单纯的艺术品交易量相对来说很小。</p><p>这一时期，大量的数字艺术平台和工具应运而生，比如</p><p>SuperRare,MakersPlace,Mintbase这类平台，他们帮助艺术家创建并发布自己的NFT，同时还提供交易市场。慢慢的，数字艺术家的生态逐步发展起来。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bb941dabb89b92113b7c8614fbd74671be60b8e42f4b04280d6c11f265a98af2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9447d452b2920121e6257514c234425e623319a8a295d50d9f76c4bd616267c2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>暂居第一的艺术家Pak，其作品的交易额达到了惊人的127,130.188 ETH！当然这个和他设计的玩法有关系，后面我们会讲到。</p><p>紧接着，传统的IP入场，包括棒球大联盟MBL、F1方程式Formula 1、星际迷航等等。NFT逐步开始吸引着全球目光，市场稳步发展。</p><p>到2021年，在几个拍卖事件标志着NFT进入疯狂增长期：</p><p>1.Beeple基于NFT的作品《Everydays: The first 5000 days》，2021年3月11日在佳士得以6935万美金卖出；</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9ccd1bca2614bbb39838159aba3c7f179e8ce2ba6037eac6521ea1994ab1952a.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>2.2021年5月，佳士得拍卖了CryptoPunks一组包含9个头像的作品，最后该拍品以 1696.25万美元成交。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b2bca2ebac46602283f200d39373646aff20d3a120ef2378432069c9dd7c49a0.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>在元宇宙概念冒出来以后，NFT还在虚拟世界中有所发展，包括Decentraland和Cryptovoxels，用户可以在上面创建3D橱窗，展示他们收藏的NFT。</p><p>（未完待续）</p><p>当然，还有很多项目我没来得及讲或者是深入，比如Ape，Pak，Cyberkongz等等，这些我打算在第三章的头部项目盘点的章节去讲。</p><p>下一章我们会有一些技术向的内容，比如如何发行编写、部署和发行自己的NFT等等，感兴趣的朋友可以关注我们。</p><p>期待和大家讨论！你可以在微信公众号「观小畜」中给我发送消息，也可以添加我的微信号「zeehkhaze」。</p><p>得益与较早关注加密货币和区块链项目的开发经验，我们打算尽可能全的整理NFT百科，有相似布道计划的朋友可以联系我。希望这个系列能够成为新手了解NFT的指引文章！</p><p>欢迎转发！祝大家在现在的经济环境下逆流而上！</p>]]></content:encoded>
            <author>shaokui@newsletter.paragraph.com (shaokui)</author>
        </item>
    </channel>
</rss>