如何使用Alchemy开发NFT智能合约(ERC721)

本教程详细介绍了如何使用OpenZeppelin Wizard和Remix IDE在Ethereum Goerli测试网络上开发、修改和部署ERC721 NFT智能合约。通过OpenZeppelin向导选择NFT功能,然后在Remix中进行修改,接着创建Alchemy账户,添加Goerli节点,获取测试ETH,并在Goerli网络上部署合约。此外,还涵盖了元数据的创建、上传至IPFS以及在OpenSea上可视化NFT的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Solidity开发智能合约并在区块链上部署可能一开始听起来有些吓人:Solidity、安全性、gas优化、开发环境和gas费用,这些只是你需要了解的一些事情,才能让你的代码托管在区块链上。不用担心,我们来帮你梳理一下。

不过,幸运的是,在过去几个月中,已经发布了许多工具,让开发人员可以更轻松地进行智能合约开发工作。

像OpenZeppelin Wizard这样的工具,为开发人员提供了点击和编写功能,可以在短时间内创建可组合和安全的智能合约,再加上Web3开发人员工具Alchemy的支持,让编写和部署区块链上的代码的体验变得比以往任何时候都更容易、更快速、更可靠。

在本教程中,您将学习如何使用Alchemy、OpenZeppelin、Remix和Ethereum Goerli开发和部署ERC721(NFT)智能合约。

更具体地说,您将学习:

  • 如何使用OpenZeppelin和Remix编写和修改智能合约
  • 使用 https://goerlifaucet.com/获取免费的Goerli ETH
  • 将其部署在Ethereum Goerli测试网络区块链上以节省gas费用
  • 使用Filebase在IPFS上托管NFT令牌元数据。
  • 铸造NFT并在OpenSea上可视化。

您也可以跟随视频教程:

让我们开始创建智能合约。

使用OpenZeppelin合约向导开发ERC721智能合约。

如前所述,在本教程中,您将使用OpenZeppelin向导创建智能合约,有两个主要原因:

  • 它是安全的。
  • 它提供标准的智能合约。

当涉及编写智能合约时,安全性至关重要。有许多智能合约漏洞的例子,由于安全性不佳而导致恶意行为者窃取了数亿美元。

你不想在部署到区块链上后有人窃取你所有宝贵的加密货币或NFT吧?

OpenZeppelin服务于此目的,是最大的智能合约标准维护者之一(ERC20、ERC721等),允许开发人员使用经过全面审核的代码来开发可靠的合约。

要开发我们的ERC721 NFT智能合约,您需要做的第一件事是进入Open Zeppelin智能合约向导页面。

进入页面后,您将看到以下编辑器:

https://i-blog.csdnimg.cn/blog_migrate/a1457375da485c3260bb63e6a4e328a9.png
https://i-blog.csdnimg.cn/blog_migrate/a1457375da485c3260bb63e6a4e328a9.png

点击左上角的ERC721按钮,选择要使用的ERC标准类型和要编写的合约类型:

https://i-blog.csdnimg.cn/blog_migrate/f593013a139b461902219fe013adfef8.png
https://i-blog.csdnimg.cn/blog_migrate/f593013a139b461902219fe013adfef8.png

现在您已经选择了合约标准,在左侧菜单中应该会看到一些选项:

让我们从选择代币的名称和符号开始。单击文本框中的“MyToken”,给它命名,然后用同样的方式设置符号,并将基础URI字段留空(代币名称将被OpenSea和Rarible用作集合名称)。

https://i-blog.csdnimg.cn/blog_migrate/563d99c6adf9e2a5aa3596934863d970.png
https://i-blog.csdnimg.cn/blog_migrate/563d99c6adf9e2a5aa3596934863d970.png

选择NFT(ERC721)代币功能

现在您需要选择要集成到我们的智能合约中的功能,在“设置”部分之后,您将找到“功能”部分,在那里您将能够选择要包括在您的智能合约中的不同模块。

https://i-blog.csdnimg.cn/blog_migrate/16843c310ef9be07e058a9f24d1ca4e4.png
https://i-blog.csdnimg.cn/blog_migrate/16843c310ef9be07e058a9f24d1ca4e4.png

在这种情况下,您将选择以下集成:

  • Mintable将创建一个仅特权账户可调用的铸造功能
  • Auto Increment IDs将自动为您的NFT分配递增的ID
  • Enumerable将为您提供访问链上代币枚举和“totalSupply”等函数的功能,这些功能在默认的ERC721集成URI存储中不存在,以将元数据和图像与您的每个NFT相关联
  • URI Storage以能够将URI与我们的NFT相关联
https://i-blog.csdnimg.cn/blog_migrate/603a8a7a0b0aaa3aa623a46c2f90cd37.png
https://i-blog.csdnimg.cn/blog_migrate/603a8a7a0b0aaa3aa623a46c2f90cd37.png

为了本教程的目的,我们建议您不要勾选以下模块,以确保我们的NFT不受到任何类型的Tokenomic影响:

  • 可销毁的 - 用于销毁代币
  • 可暂停的 - 用于暂停代币转移、销售等
  • 投票 - 提供类似于代表和投票的治理功能

如果您想了解更多关于这些模块的信息,请查看官方OpenZeppelin ERC721标准文档。

现在,您已经选择了所需的功能,OpenZeppelin向导将填充智能合约的代码,它应该如下所示:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract Alchemy is ERC721, ERC721Enumerable, ERC721URIStorage, Ownable {
    constructor() ERC721("Alchemy", "ALC") {}

    function safeMint(address to, uint256 tokenId, string memory uri)
        public
        onlyOwner
    {
        _safeMint(to, tokenId);
        _setTokenURI(tokenId, uri);
    }

    // The following functions are overrides required by Solidity.

    function _beforeTokenTransfer(address from, address to, uint256 tokenId)
        internal
        override(ERC721, ERC721Enumerable)
    {
        super._beforeTokenTransfer(from, to, tokenId);
    }

    function _burn(uint256 tokenId) internal override(ERC721, ERC721URIStorage) {
        super._burn(tokenId);
    }

    function tokenURI(uint256 tokenId)
        public
        view
        override(ERC721, ERC721URIStorage)
        returns (string memory)
    {
        return super.tokenURI(tokenId);
    }

    function supportsInterface(bytes4 interfaceId)
        public
        view
        override(ERC721, ERC721Enumerable)
        returns (bool)
    {
        return super.supportsInterface(interfaceId);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值