🧩 NFT 开发实战 从小白到平台
📚 30 章 · 完整目录
NFT概念与市场认知
NFT定义 vs 加密货币 OpenSea/Rarible 数字艺术/游戏
区块链基础入门
区块/链/共识 以太坊&智能合约 MetaMask Goerli/Sepolia
开发环境搭建
Node.js & npm Hardhat VS Code + Solidity Git 基础
Solidity 语言基础 (上)
合约结构 状态/局部变量 uint/string/address public/internal
Solidity 语言基础 (下)
mapping/array struct/enum event/log modifier/error
ERC721 标准详解
IERC721 balanceOf/ownerOf tokenURI OpenZeppelin
编写第一个NFT合约
继承ERC721 name/symbol mint 函数 铸造事件
合约部署与验证
Hardhat 部署脚本 Goerli 测试网 Etherscan 验证 交互测试
IPFS 去中心化存储
IPFS 原理 Pinata/Infura 上传图片/JSON tokenURI 生成
NFT 元数据结构
name/description/image attributes/levels 外部链接/收藏集 动态元数据
前端基础 (HTML/CSS)
HTML5 语义化 Flexbox/Grid 响应式设计 CSS 变量/主题
前端基础 (JavaScript)
ES6 箭头/解构 Promise/async-await DOM / 事件 Fetch API
React 框架入门
组件/JSX/Props useState/useEffect React Router 生命周期
Web3.js 与 Ethers.js
Provider 连接 Signer/Contract 读取合约状态 发送交易/事件
连接钱包功能实现
useMetaMask Hook 连接/断开按钮 账户/余额显示 切换网络
NFT 铸造页面开发
表单/上传图片 调用 mint 函数 Pending/Confirmed 铸造成功提示
NFT 画廊页面开发
已铸造列表 balanceOf / tokenOfOwnerByIndex 批量 tokenURI 懒加载/缓存
NFT 详情页面开发
路由参数 tokenId 完整元数据 属性表格 收藏/分享
合约高级功能 (上)
白名单 Merkle Tree 铸造价格 ETH 上限/时间锁 批量铸造
合约高级功能 (下)
版税 ERC2981 Pausable 暂停 UUPS 代理升级 治理代币/DAO
Gas 优化技巧
存储变量打包 循环减少 SLOAD 事件替代存储 Calldata vs Memory
安全审计基础
重入攻击/ReentrancyGuard SafeMath / 溢出 Ownable / RBAC Chainlink VRF
测试驱动开发
Hardhat 测试框架 describe/it 模拟用户操作 覆盖率报告
NFT 市场合约开发
挂单 Listing 结构 创建/取消挂单 购买匹配逻辑 平台手续费
NFT 市场前端开发
挂单表单组件 订单簿 Order Book 购买按钮/交易流 历史成交记录
多链部署策略
Polygon/Mumbai 跨链桥 Wormhole 多链地址管理 Gas 代币差异
NFT 碎片化与衍生品
ERC1155 批量代币 碎片化 Fractional 合成 NFT 借贷协议集成
项目实战 (上)
需求分析 UI/UX 设计稿 合约架构设计 前端组件树
项目实战 (中)
合约编码/测试 前端页面开发 钱包集成/交互 IPFS 元数据上传
项目实战 (下)
部署测试网 联调/Bug修复 主网部署准备 上线/社区运营