1.编写合约
首先我们来到合约编写页面
https://docs.openzeppelin.com/contracts/4.x/wizard

2.将合约使用Remix修改和部署
导入Remix后合约的结构如下:

我们需要修改如下几点,你们也可以直接将帝哥的代码覆盖你的函数即可:
1.该NFT是任何人都可以mint的,所以修改如下
function safeMint(address to, string memory uri) public {
require(_tokenIdCounter.current() <= MAX_SUPPLY, "I'm sorry we reached the cap");
uint256 tokenId = _tokenIdCounter.current();
_tokenIdCounter.increment();
_safeMint(to, tokenId);
_setTokenURI(tokenId, uri);
}
2.修改NFT的供应总量
uint256 MAX_SUPPLY = 100000; //将该代码添加在Counters.Counter private _tokenIdCounter下一行
3.获取测试token
我们去到下面的网站获取测试Token,同时需要大家去Alchemy注册一个账号
4.创建一个Alchemy的app
1.首先我们去到Alchemy注册一个账户,同时新建一个app(需要选择以太坊生态和Rikney)
查看我们的Key

5.将 Alchemy Rinkeby 添加到 Metamask 钱包,信息如下
Network name: Alchemy Rinkeby
New RPC URL: 你申请的app的地址,去上面的viewkey获取即可
Chain ID: 4
Currency Symbol: ETH
Block Explorer: https://rinkeby.etherscan.io/
6.部署发布我们的合约
部署合约
将出现一个 Metamask 弹出窗口,点击“签名”,然后继续支付 gas 费用。如果一切都按预期工作,10 秒后,应该会在 Deployed Contracts 下看到该合约:
0x027122fF7F9b1833914F513f07d2A3FB31D20eFD
已经部署完成合约
7.上传我们的NFT元数据
Pinata网站管理我们的元数据,我们只需要申请一个账号,会免费给我1g的存储空间。
mint我们的NFT,在safeMint输入我们的钱包地址和刚才编写的uri(ipfs://\<your\_metadata\_cid>)使用json的。
8.查看我们的NFT
我们去到OpenSea测试网站查看我们做的NFT
我们找到对应合约的NFT,现在我们看到的合约地址和我们刚才部署的合约地址是否对应上,现在还是盲盒,需要我们自己去操作下
9.开盲盒
在tokenUri 插入“0”作为 id 参数,点击call,它应该显示你的 tokenURI。
