ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

从零铸造第一个 NFT:easy-vibe 10 分钟上手 ERC-721 智能合约开发实战

从零铸造第一个 NFT:easy-vibe 10 分钟上手 ERC-721 智能合约开发实战 从零铸造第一个 NFTeasy-vibe 10 分钟上手 ERC-721 智能合约开发实战【免费下载链接】easy-vibe vibe coding 101The first course for AI-native product builders.项目地址: https://gitcode.com/GitHub_Trending/ea/easy-vibe本教程是 easy-vibe 课程体系vibe coding 101面向 AI 原生产品开发者的第一课中「跨平台开发」模块的一部分完整闭环教你从零编写 NFT 智能合约、部署到以太坊 Sepolia 测试网、铸造自己的 NFT并在 Etherscan / OpenSea 测试网上验证。全程使用浏览器工具Remix IDE MetaMask 钱包无需安装 Node.js、Hardhat 等任何本地环境10 分钟内即可完成且零真实成本。读完本文你将掌握 NFT 与智能合约的核心概念、ERC-721 标准的最小实现、测试网部署与铸造的完整操作流程以及用 IPFS 为 NFT 添加图片与元数据的进阶能力。一、NFT 与智能合约先搞懂四个关键词在动手之前先把「链、合约、Token、NFT」这四个词说清楚——它们贯穿本教程的每一步操作理解了概念后面就不是在盲目点按钮。1.1 链一本由许多电脑共同保存的账本区块链可以理解为一本账本谁创建了一张数字证书、证书编号是多少、现在归谁这些记录按顺序保存下来。普通数据库通常由一家公司控制而公共区块链由网络中的许多节点共同保存和核对记录已确认的内容不容易被某一个人单独修改——这正是它适合记录所有权与流转历史的原因。本教程不直接使用以太坊主网主网涉及真实钱包、真实资产和真实手续费而是使用Sepolia 测试网。后面你会在 MetaMask 中看到它的链 ID 是11155111这个编号的作用类似网络名称用来避免程序连错地方。1.2 合约放在链上自动执行的程序智能合约不是需要签字盖章的合同而是一段运行在区块链上的程序。它里面可以写清楚规则只有管理员能发行证书、每张证书有不同编号、任何人都能查询证书现在属于谁。程序放到链上后用户调用它链就按照规则处理结果。把合约第一次放到链上叫部署部署成功后会得到一个合约地址——可以把它理解成这段程序在链上的门牌号。1.3 Token 与 NFT合约管理的一条数字记录Token常被译作代币但未必是拿来付款的币是由合约创建和管理的一条数字记录。例如创建两张证书后合约里会出现Token 0属于地址 AToken 1属于地址 B。这里的0和1是 Token ID——每条记录的唯一编号。Token 本身可以代表证书、门票、会员资格、游戏道具也可以代表可交换的数量。**NFTNon-Fungible Token非同质化 Token**是每个编号都可以不同的 Token一元硬币和另一枚一元硬币通常可以互换而Token 0代表张三的结业证书、Token 1代表李四的结业证书它们不能当成完全相同的记录。ERC-721 是以太坊生态中最常用的 NFT 标准它约定了怎样查询所有者ownerOf、怎样查看一个地址拥有几枚 TokenbalanceOf、怎样转移等通用接口。不同项目遵循同一套规则钱包和应用才知道怎样读取它们。一枚 NFT 由「合约地址 Token ID」共同确定。需要特别澄清NFT 不等于图片。图片、名称和说明通常放在 metadata内容说明中合约只保存 Token ID、所有者和一个名为tokenURI的内容地址——应用通过这个地址读取 metadata。Token 的所有权也不自动等于图片版权品牌授权和使用范围需要单独写清楚。1.4 为什么使用测试网以太坊有主网mainnet和测试网testnet之分对比项主网测试网SepoliaETH 价值真实货币免费领取无真实价值部署成本需要真实 gas 费完全免费适用场景生产发布学习、测试、开发功能差异无与主网一致测试网与主网功能完全相同唯一区别是测试网 ETH 没有真实价值因此你可以放心地学习和实验不用担心花钱。1.5 本教程路线图我们将按以下流程完成整个闭环准备钱包和测试 ETH约 2 分钟安装 MetaMask 并免费领取测试 ETH编写并部署合约约 4 分钟在 Remix IDE 中编写 NFT 合约并部署到 Sepolia铸造 NFT 并验证结果约 4 分钟调用合约铸造 NFT并在 OpenSea 和 Etherscan 上验证进阶给 NFT 添加图片可选通过 IPFS 存储图片让 NFT 更完整。零成本、零配置全程使用浏览器工具Remix IDE无需安装 Node.js / Hardhat代码使用 OpenZeppelin 官方安全模板铸造后可在 OpenSea 测试网上查看你的 NFT。二、准备钱包与测试 ETH2 分钟2.1 安装 MetaMask 钱包MetaMask 是最流行的以太坊钱包它是一个浏览器扩展让你能与区块链应用交互。前提条件Chrome 浏览器 MetaMask 扩展 一个 MetaMask 钱包账户。打开 Chrome访问 MetaMask 官网并点击Download安装 Chrome 扩展安装后点击右上角的 MetaMask 狐狸图标选择Create a new wallet并设置密码重要妥善保管助记词12 个英文单词。丢失测试钱包不要紧但良好的安全习惯很重要。安全提示链上账户的地址相当于公开的收件地址别人知道地址只能查看或向它发送内容无法直接控制账户。真正能控制账户的是私钥钱包软件负责保管私钥并代替你签名。私钥和助记词一旦泄露别人就可能控制账户所以绝不能发给 AI、网站客服或其他人。2.2 切换到 Sepolia 测试网MetaMask 默认连接以太坊主网需要切换到 Sepolia 测试网点击 MetaMask 顶部的网络下拉菜单默认显示 Ethereum Mainnet点击Show test networks显示测试网络选择Sepolia test network。如果看不到 Sepolia点击Add network手动添加配置项值网络名称Sepolia test networkRPC URLhttps://rpc.sepolia.org链 ID11155111货币符号SepoliaETH区块浏览器https://sepolia.etherscan.io2.3 免费领取测试 ETH部署合约和铸造 NFT 都需要支付 gas 费。在测试网上gas 用免费的测试 ETH 支付。访问下面任意一个 faucet水龙头输入钱包地址即可领取Faucet地址每次领取量是否需要登录QuickNodehttps://faucet.quicknode.com/ethereum/sepolia0.1 ETH是Alchemyhttps://www.alchemy.com/faucets/ethereum-sepolia0.1 ETH是Google Cloudhttps://cloud.google.com/application/web3/faucet/ethereum/sepolia0.05 ETH是Google 账户提示0.1 个测试 ETH 足够部署一个合约并铸造几十个 NFT。如果一个 faucet 不可用换一个试试。领取成功后返回 MetaMask余额应从 0 变为 0.1 ETH可能需要几秒钟刷新。三、编写并部署 NFT 智能合约4 分钟3.1 打开 Remix IDERemix 是以太坊官方推荐的在线智能合约开发环境完全运行在浏览器中无需安装。打开https://remix.ethereum.org/你会看到一个类似 VS Code 的界面左侧是文件资源管理器中间是代码编辑器右侧是编译/部署面板。3.2 创建合约文件在左侧文件资源管理器中点击contracts文件夹点击上方的按钮创建新文件命名为MySimpleNFT.sol粘贴以下代码// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; // Import OpenZeppelin official secure ERC721 template import openzeppelin/contracts/token/ERC721/ERC721.sol; // Simplest NFT contract: name, symbol, mint function only contract MySimpleNFT is ERC721 { uint256 private _tokenId; // Initialize collection name and symbol constructor() ERC721(VibeCoder, VIBE) {} // Mint NFT: call once to mint one token to caller function mint() public { _safeMint(msg.sender, _tokenId); _tokenId; } }代码逐行解读不足 15 行每行都可理解代码含义pragma solidity ^0.8.20指定 Solidity 编译器版本^表示 0.8.20 及以上兼容import openzeppelin/...导入 OpenZeppelin 的 ERC721 标准实现经过安全审计的模板contract MySimpleNFT is ERC721创建继承 ERC721 标准的合约ERC721(VibeCoder, VIBE)设置集合名称 VibeCoder 与符号 VIBE_safeMint(msg.sender, _tokenId)为调用者铸造一个新 NFTmsg.sender即当前调用者地址_tokenId每次铸造后 Token ID 自增什么是 ERC-721它是以太坊上的 NFT 标准定义了 NFT 的基本能力转移、查询所有者等。OpenZeppelin 提供了经过安全审计的实现因此我们可以直接继承而不是从零构建。关于 Token ID 从 0 开始本合约的计数器从0开始和很多编程语言的数组编号一样。它不代表价格也不表示存在一张第 0 等的证书合约完全可以设计成从1开始。3.3 编译合约点击左侧面板的Solidity Compiler锤子图标选择编译器版本0.8.20或更高的 0.8.x点击Compile MySimpleNFT.sol出现绿色对勾 ✅ 表示编译成功。如果报错检查 Solidity 版本是否匹配、OpenZeppelin 导入路径是否正确。Remix 会自动从 npm 下载 OpenZeppelin 依赖。3.4 将合约部署到 Sepolia 测试网点击左侧面板的Deploy Run Transactions以太坊图标将Environment设置为Injected Provider - MetaMask这会自动连接你的 MetaMask 钱包MetaMask 会弹出连接请求点击Connect确认网络是Sepolia (11155111)在 Contract 下拉框中选择MySimpleNFT点击DeployMetaMask 弹出交易确认点击Confirmgas 费极低测试网免费。几秒钟后部署成功下方的Deployed Contracts区域会显示你的合约地址。请复制并保存这个地址后面会用到。四、铸造 NFT 并验证结果4 分钟4.1 铸造你的第一个 NFT部署成功后在 Remix 的Deployed Contracts区域会看到合约交互面板展开合约面板找到mint按钮橙色直接点击mint无需输入参数MetaMask 弹出交易确认点击Confirm等待几秒钟完成。恭喜你刚刚铸造了 NFT #0它现在属于你的钱包地址。可以继续点击 mint 铸造更多Token ID 每次自动递增#1、#2、#3……。铸造的本质mint并不是生成一张图片而是调用合约在链上创建一条新的 Token 记录并指定它属于哪个地址。完整过程可以记成五句话启动测试网账本 → 部署合约把证书规则放进账本→ 调用mint→ 合约写入Token 0 属于调用者地址 → 调用查询功能把这条记录读回来。4.2 验证铸造结果方法一在 Remix 中验证在合约面板中找到balanceOf蓝色按钮输入你的钱包地址并调用。如果返回1或你铸造的数量说明铸造成功。也可以调用ownerOf输入0Token ID它会返回你的钱包地址证明 NFT #0 属于你。方法二在 Etherscan 上验证推荐打开 Sepolia Etherscanhttps://sepolia.etherscan.io/在搜索框粘贴你的合约地址你会看到合约详情页及所有交易记录点击Token Tracker查看你的合约铸造的所有 NFT。在 Etherscan 上每笔铸造交易都有完整记录谁铸造的、何时铸造、Token ID 是多少。这就是区块链公开、透明、不可篡改的魅力所在。五、进阶用 IPFS 为 NFT 添加图片可选到目前为止铸造的 NFT 只有 ID没有图片和描述。要让 NFT 完整需要IPFS星际文件系统InterPlanetary File System来存储图片和元数据。5.1 什么是 IPFSIPFS 是一个去中心化文件存储网络。与常规云存储不同IPFS 上的文件不依赖单一服务器而是分布在全球各节点上这意味着某个服务器宕机文件也不会丢失文件内容通过哈希唯一标识无法被篡改非常适合存储 NFT 的图片和元数据。在真实产品中一枚 NFT 通常至少包含四层合约记录 Token 编号、所有者和转移规则metadata 保存名称、说明、图片和属性应用负责领取、查看、转移和展示后端负责发行资格、运营规则、监控和用户支持。NFT 并不是把整张图片直接塞进链上——常见做法是由合约保存tokenURI应用再通过这个地址读取 metadata。5.2 将图片上传到 PinataPinata 是最流行的 IPFS 存储服务免费额度提供 1GB 存储足够使用访问https://pinata.cloud/并注册免费账户登录后点击Upload-File选择你想用作 NFT 作品的图片AI 生成的图片或其他任意图片均可上传成功后复制CID形如QmXyz...的字符串。你的图片 URI 为ipfs://yourCID5.3 创建元数据 JSONNFT 元数据是描述 NFT 名称、描述和图片 URI 的 JSON 文件。创建一个metadata.json{ name: Vibe Coder Certificate #0, description: This NFT certifies that the holder has completed the NFT minting tutorial and entered the world of Web3., image: ipfs://your-image-cid, attributes: [ { trait_type: Course, value: Easy Vibe }, { trait_type: Skill, value: Smart Contract }, { trait_type: Level, value: Beginner } ] }同样把metadata.json上传到 Pinata获取元数据 CID。5.4 升级合约以支持图片要在 NFT 中包含图片需要稍微升级合约加入tokenURI。回到 Remix新建文件MyNFTWithImage.sol// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import openzeppelin/contracts/token/ERC721/ERC721.sol; import openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol; contract MyNFTWithImage is ERC721, ERC721URIStorage { uint256 private _tokenId; constructor() ERC721(VibeCoder, VIBE) {} // Pass metadata URI when minting function mint(string memory uri) public { _safeMint(msg.sender, _tokenId); _setTokenURI(_tokenId, uri); _tokenId; } // Overrides required by Solidity function tokenURI(uint256 tokenId) public view override(ERC721, ERC721URIStorage) returns (string memory) { return super.tokenURI(tokenId); } function supportsInterface(bytes4 interfaceId) public view override(ERC721, ERC721URIStorage) returns (bool) { return super.supportsInterface(interfaceId); } }与第一个合约相比这里新增了ERC721URIStorage扩展mint函数现在接收一个元数据 URI 参数通过_setTokenURI将 URI 绑定到 Token同时必须重写tokenURI和supportsInterface两个函数Solidity 多继承下的重写要求分别调用super实现以保证标准接口的正确性。部署后调用mint并传入你的元数据 URI例如ipfs://QmAbc.../metadata.json铸造出的 NFT 就会包含图片和描述。六、总结与进阶方向至此你已经从零完成了一个完整的 NFT 开发闭环理解了 NFT 和智能合约的核心概念安装了 MetaMask 并切换到 Sepolia 测试网在 Remix IDE 中用不到 15 行代码编写了 NFT 智能合约将合约部署到以太坊测试网铸造了自己的 NFT 并在 Etherscan 上验证可选学会了用 IPFS 添加图片和元数据。整个过程无需安装任何本地环境、不花一分钱、完全在浏览器中完成。这就是区块链开发的魅力门槛比大多数人想象的低得多。这也符合 easy-vibe 课程的核心理念——AI 原生产品构建者可以快速把一个想法变成可验证的链上原型本教程即位于 Stage 3 跨平台开发模块 之中与 平台选型指南 中「NFT 智能合约适合发行可交易的数字会员卡与收藏品」的场景判断相互呼应。进阶方向使用 Hardhat / Foundry 做本地开发当合约逻辑变复杂时 Remix 不够用。Hardhat 和 Foundry 是专业的本地框架支持自动化测试、脚本化部署、gas 优化等添加白名单和铸造限制控制谁能铸造、每个钱包的最大铸造次数、铸造价格等规则构建铸造前端使用 React ethers.js / viem 构建精美的铸造页面实现网页一键铸造探索 ERC-1155 多版本 NFTERC-1155 允许一个 Token ID 下有多个副本适合游戏道具和门票场景部署到主网准备好后部署到以太坊主网或 Polygon、Base 等 gas 费更低的 L2 链。参考与延伸阅读本文法文原版docs/fr-fr/stage-3/cross-platform/nft-minting/index.md英文版教程docs/en/stage-3/cross-platform/nft-minting/index.md中文版教程含链/合约/Token 术语详解与真实产品案例 Ticketmaster、POAPdocs/zh-cn/stage-3/cross-platform/nft-minting/index.mdeasy-vibe 高级开发阶段索引docs/en/stage-3/index.md平台选型指南NFT 适用场景docs/en/stage-3/cross-platform/choose-platform/index.md【免费下载链接】easy-vibe vibe coding 101The first course for AI-native product builders.项目地址: https://gitcode.com/GitHub_Trending/ea/easy-vibe创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表