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修复
主网部署准备
上线/社区运营