# Alchemy Road to Web3-第一周边学边获取NFT

By [KnowYourself](https://paragraph.com/@knowyourself-2) · 2022-10-14

---

Alchemy计划将新资金用于推广Web3采用，这方面的一些举措包括推出Web3 University，就是现在的 Road to Web3 活动，活动为期10周，每周一个NFT。

该课程是为期10周，只要你在10周完成就可以。

今天我们先来说下第一个任务课程：如何使用 Alchemy 开发 NFT 智能合约（ERC721）

官方提供了一个本课程的大纲：

*   如何使用 OpenZeppelin 和 Remix 编写和修改智能合约
    
*   **使用**Goerl网络获得免费的 Rinkeby ETH
    
*   将其部署在以太坊 Goerl测试网区块链上以节省汽油费
    
*   使用 Filebase 在 IPFS 上托管 NFT 令牌元数据。
    
*   铸造 NFT 并在 OpenSea 上可视化
    

**1.编写合约**

首先我们来到合约编写页面

![合约编写页面](https://storage.googleapis.com/papyrus_images/a4b7de7e1ade2eac51601e0d81f05a4e061f0193a0da1a4ec7aacd55a07c22bc.png)

合约编写页面

合约编写页面

合约编写页面

**2.将合约使用Remix修改和部署**

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

导入Remix后合约的结构如下：

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

我们需要修改如下几点：

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）

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

查看我们的Key

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

**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/](https://rinkeby.etherscan.io/)
    

**6.部署发布我们的合约**

![部署合约](https://storage.googleapis.com/papyrus_images/62c4c9c043d64cbf3a0220be3d69ae8e83818df634318ec1c8cebdbbb697125b.png)

部署合约

部署合约

部署合约

将出现一个 Metamask 弹出窗口，点击“签名”，然后继续支付 gas 费用。如果一切都按预期工作，10 秒后，应该会在 Deployed Contracts 下看到该合约：

![已经部署完成的合约](https://storage.googleapis.com/papyrus_images/d1c6e273095c3c038d4842b110d6ef64573f16a8db0b13d32b1efb747809bb85.png)

已经部署完成的合约

已经部署完成的合约

已经部署完成的合约

**7.上传我们的NFT元数据**

Pinata网站可以管理我们的元数据，一定要去学会怎么使用，我们只需要申请一个账号，会免费给1g的存储空间。

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

mint我们的NFT，在safeMint输入我们的钱包地址和刚才编写的uri（ipfs://\\<your\\\_metadata\\\_cid>）使用json的。

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

**8.查看我们的NFT**

我们去到OpenSea测试网站查看我们做的NFT

我们找到对应合约的NFT，现在我们看到的合约地址和我们刚才部署的合约地址是否对应上，现在还是盲盒，需要我们自己去操作下

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

**9.开盲盒**

在tokenUri 插入“0”作为 id 参数，点击call，它应该显示你的 tokenURI。

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

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

需要等待一段时间，大家可以先试试。

---

*Originally published on [KnowYourself](https://paragraph.com/@knowyourself-2/alchemy-road-to-web3-nft)*
