百亿项目 Alchemy Road to Web3 第三周 NFT 获取教程
2022-08-13 21:14
Greta
2022-08-13 21:14
Greta
2022-08-13 21:14
订阅此专栏
收藏此文章

Alchemy 是什么项目?

2019 年 12 月,Alchemy 完成1500 万美元 A 轮融资,资方为 Pantera Capital,斯坦福大学,Coinbase,三星等。

2021 年 4 月,Alchemy 以 5.05 亿美元估值完成8000 万美元 B 轮融资,Coatue 和 Addition 领投,DFJ Growth、K5 Global、Chainsmokers(烟鬼组合)、演员 Jared Leto 和 Glazer 家族参投。

2021 年 10 月,Alchemy 以 35 亿美元估值完成2.5 亿美元 C 轮融资,由 a16z 领投的。

2022 年 2 月,Alchemy 以 102 亿美元估值完成2 亿美元融资,Lightspeed 与 Silver Lake 领投。

Alchemy 是一个背景强大、经费充足、踏实做事、没有发币的团队,这样的项目不刷,难道去刷土狗吗?

并且,Alchemy 计划将新资金用于推广 Web3 采用,这方面的一些举措包括推出 Web3 University,就是现在的 Road to Web3 活动,活动为期 10 周,每周一个 NFT。看了下 nft 数量极少,估计由于任务难度大,很多小伙伴直接放弃,这样的项目若是空投,绝对是大毛。

手把手第三周教程开始:如何使用链上元数据制作 NFT - Hardhat 和 JavaScript

官方原版教程链接,其中有长达 49 分钟的视频教程还有大篇幅的文字教程,我按照我的做法给大家一个易于操作的图文教程。

没有做过第二周的记得照着这个先做一下。

https://mirror.xyz/0xCD0e394639B2D0b159B41F9dBe0583C33d85e874/JCRkc6KJPrpJX3A03E0fzF96oNzOY6tCDxn9Duz_p3I

step1 将 Polygon Mumbai 添加到您的 Metamask 钱包

1.进入 mumbai.polygonscan.com 并向下滚动到页面底部。 您将看到 “添加多边形网络”按钮,单击它并确认您要将其添加到 Metamask。

step2 获取免费的 Matic 以部署您的 NFT 智能合约

获取 Test MATIC 非常简单,只需导航到以下水龙头之一:

将钱包地址复制到文本栏中,然后点击 “Send Me MATIC”

step3 如何使用链上元数据制作 NFT - 项目设置

1.按 Win+R,在跳出框中输入 cmd。

2.进入控制台,输入 mkdir ChainBattled 新建一个文件夹,再输入 cd ChainBattled 按回车进入该文件夹。

3.输入 npm install -g yarn 安装 yarn。

4.再输入 yarn add hardhat 安装 hardhat。

5.然后输入 npx hardhat init,连按三下回车即可。

6.输入 yarn add @openzeppelin/contracts 安装 OpenZeppelin 智能合约库。

7.输入 yarn add @nomiclabs/hardhat-etherscan ,按回车。

step4 修改 hardhat.config.js 文件

1.打开 Vscode,点击 file,再点击 open folder。(不要管右侧代码,那是上一个项目的哈哈)

2.找到刚才创建的文件夹,点击选择文件夹。

3.打开后是这个样子的。

4.右键点击,然后 delete lock.sol 和 deploy.js 这两个文件。

5.点击 hardhat.config.js,将下面代码粘贴进去!如图所示!

require("dotenv").config();require("@nomiclabs/hardhat-waffle");require("@nomiclabs/hardhat-etherscan");module.exports = {  solidity: "0.8.10",  networks: {    mumbai: {      url: process.env.TESTNET_RPC,      accounts: [process.env.PRIVATE_KEY]    },  },  etherscan: {    apiKey: process.env.POLYGONSCAN_API_KEY  }};

step5 具有链上元数据的 NFT:开发智能合约

在 contracts 文件夹中,创建一个新文件并将其命名为“ChainBattles.sol” ,然后将以下代码粘贴进去(注意,这个粘贴我的,官方的有错误!!),如图所示,记得保存,记得保存!

// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";import "@openzeppelin/contracts/utils/Counters.sol";import "@openzeppelin/contracts/utils/Strings.sol";import "@openzeppelin/contracts/utils/Base64.sol";contract ChainBattles is ERC721URIStorage  {    using Strings for uint256;    using Counters for Counters.Counter;    Counters.Counter private _tokenIds;    mapping(uint256 => uint256) public tokenIdToLevels;    constructor() ERC721 ("Chain Battles", "CBTLS"){    }function generateCharacter(uint256 tokenId) public returns(string memory){    bytes memory svg = abi.encodePacked(        '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMinYMin meet" viewBox="0 0 350 350">',        '<style>.base { fill: white; font-family: serif; font-size: 14px; }</style>',        '<rect width="100%" height="100%" fill="black" />',        '<text x="50%" y="40%" class="base" dominant-baseline="middle" text-anchor="middle">',"Warrior",'</text>',        '<text x="50%" y="50%" class="base" dominant-baseline="middle" text-anchor="middle">', "Levels: ",getLevels(tokenId),'</text>',        '</svg>'    );    return string(        abi.encodePacked(            "data:image/svg+xml;base64,",            Base64.encode(svg)        )        );}function getLevels(uint256 tokenId) public view returns (string memory) {    uint256 levels = tokenIdToLevels[tokenId];    return levels.toString();}function getTokenURI(uint256 tokenId) public returns (string memory){    bytes memory dataURI = abi.encodePacked(        '{',            '"name": "Chain Battles #', tokenId.toString(), '",',            '"description": "Battles on chain",',            '"image": "', generateCharacter(tokenId), '"',        '}'    );    return string(        abi.encodePacked(            "data:application/json;base64,",            Base64.encode(dataURI)        )    );}function mint() public {    _tokenIds.increment();    uint256 newItemId = _tokenIds.current();    _safeMint(msg.sender, newItemId);    tokenIdToLevels[newItemId] = 0;    _setTokenURI(newItemId, getTokenURI(newItemId));}    function train(uint256 tokenId)public{        require(_exists(tokenId));        require(ownerOf(tokenId)==msg.sender,"You must own this token to train it");        uint256 currentLevel=tokenIdToLevels[tokenId];        tokenIdToLevels[tokenId]=currentLevel+1;        _setTokenURI(tokenId,getTokenURI(tokenId));        }}

step6 使用链上元数据智能合约部署 NFT

1.在控制台输入 echo test>.env 创建一个.env 文件。

2.回到 vscode,在 env 文件中粘贴以下代码,如图所示!

TESTNET_RPC=""PRIVATE_KEY=""POLYGONSCAN_API_KEY=""

3.进入 alchemy.com 并创建一个新的 Polygon Mumbai 应用程序。

点击 create app。

如下图输入,再点击 create app。

4.点击刚才创建的 app 的 view key。复制 HTTPS 的链接,粘贴到 vscode 中 env 文件的第一行,如图所示。

5.打开 Metamask 钱包,点击三点菜单 > 账户详情 > 并将您的私钥复制粘贴为“ PRIVATE_KEY ”值,如图所示。

6.最后,进入polygonscan.com, 并点击右上角创建一个新帐户。

进入 API-KEY,点击 ADD,添加完毕后将红框内字符串复制,粘贴到 env 文件第三行,如图所示。保存!!!

step7 创建部署脚本

1.在 script 问价夹下创建 deploy.js 文件,并粘贴以下代码,如图所示,记得保存。

const main = async () => {  try {    const nftContractFactory = await hre.ethers.getContractFactory(      "ChainBattles"    );    const nftContract = await nftContractFactory.deploy();    await nftContract.deployed();    console.log("Contract deployed to:", nftContract.address);    process.exit(0);  } catch (error) {    console.log(error);    process.exit(1);  }};  main();

step8 编译和部署智能合约

1.在控制台输入 npm install dotenv ,点击回车安装。

2.在控制台输入 npm install @nomiclabs/hardhat-waffle,点击回车安装。

3.在控制台输入 npx hardhat compile,按回车,如图所示即可。

4.在控制台输入 npx hardhat run scripts/deploy.js –network mumbai ,等待 10-15 秒,在终端中看到智能合约地址。

step9 在 Polygon Scan 上检查您的智能合约

1.复制刚刚部署的智能合约地址,进入 mumbai.polygonscan.com , ** 在搜索栏中粘贴智能合约的地址。** 然后点击 contract,会发现合约代码不可读。

2.回到控制台,输入 npx hardhat verify –network mumbai + 你的合约地址,如图所示。(由于请求的人比较多,有时候会错误,多请求几次即可)(我这里是地址已经验证过了,所以出现下面那个错误)

step10 通过多边形扫描与您的智能合约交互

1.现在智能合约已经通过验证,mumbai.polygonscan.com 将在其附近显示一个绿色小勾。

2.点击 connect to web3,链接小狐狸。

3.点击 write connect,然后点击第四个 mint 下的 write,在小狐狸中确认。

step11 在 OpenSea 上查看您的动态 NFT

1.复制智能合约地址,前往 testnet.opensea.com ,并将其粘贴到搜索栏中。

step12 更新动态 NFT 图像训练 NFT

1.回到 mumbai.polygonscan.com , 单击 write connect,然后看到第 8 个 train,在其中输入 1 点击 write,然后点击小狐狸确认。

2.再回到刚才的界面并刷新几次,如图所示即可。

step13 项目提交。

提交链接

好了全部完毕,坐等项目方快照,领取 NFT 即可!

相关Wiki

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Greta
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开