NFT 合约实战
📘 30 章 · 从零到一
Solidity
01
NFT 概述
什么是NFT
FT区别
应用场景
ERC-721
02
开发环境准备
Remix IDE
MetaMask
测试网络
Goerli/Sepolia
03
Solidity 基础回顾
合约结构
状态变量
数据类型
uint/address/string
04
映射与结构体
mapping
struct定义
实例化
存储元数据
05
ERC-721 标准深入
IERC721
IERC721Metadata
balanceOf
ownerOf/safeTransferFrom
06
编写第一个NFT合约
继承OpenZeppelin
构造函数
名称与符号
mint函数
07
代币URI与元数据
tokenURI
Base URI
JSON元数据
IPFS存储
08
铸造函数优化
onlyOwner
maxSupply
铸造价格
白名单
09
安全传输
safeTransferFrom
transferFrom区别
_beforeTokenTransfer
重入防护
10
合约事件
Event定义
indexed参数
Transfer
Approval
11
所有权与访问控制
Ownable
onlyOwner
AccessControl
角色控制
12
合约暂停机制
Pausable
whenNotPaused
紧急暂停
应用场景
13
批量操作
batchMint
批量转账
Gas优化
技巧
14
版税机制
EIP-2981
版税计算
接收地址
设置
15
合约升级
代理模式
UUPS/Transparent
可升级NFT
存储布局
16
测试基础
Foundry框架
单元测试
测试网部署
验证
17
高级测试
Fuzz测试
不变性测试
Gas报告
分析
18
合约安全
重入/整数溢出
前端抢跑
Slither
静态分析
19
Gas 优化
变量打包
calldata/memory
循环优化
Merkle树
20
链上随机数
Chainlink VRF
随机属性
稀有度
分配
21
动态 NFT
元数据变化
链上状态
L2方案
随时间更新
22
合约部署
Hardhat脚本
多链部署
Etherscan验证
策略
23
前端集成
Web3.js/Ethers
连接钱包
调用合约
基础
24
IPFS 去中心化存储
Pinata
文件上传
元数据持久化
使用
25
市场合约
挂单与成交
取消挂单
平台费用
实现
26
拍卖合约
英式拍卖
荷兰拍卖
拍卖结算
实现
27
碎片化 NFT
ERC-1155
半同质化
批量管理
应用
28
DAO 治理
NFT投票权
Snapshot
治理合约
实现
29
Layer2 与跨链
Optimism/Arbitrum
跨链桥
Wrapped NFT
部署
30
项目实战
从0到1
合约审计
上线运营
要点