NFT 开发:Solidity 写 ERC-721 合约 + OpenSea 部署指南
一、ERC-721 合约开发(Solidity)
核心组件:
- 导入 OpenZeppelin 库(标准化实现)
- 实现基础功能:
- 代币铸造
- 所有权转移
- 元数据管理
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract MyNFT is ERC721, Ownable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("MyNFT", "MNFT") {}
// 铸造新代币(仅合约所有者可调用)
function mintNFT(address recipient, string memory tokenURI)
public onlyOwner returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(recipient, newItemId);
_setTokenURI(newItemId, tokenURI); // 设置元数据链接
return newItemId;
}
// 重写基础URI(可选)
function _baseURI() internal pure override returns (string memory) {
return "https://ipfs.io/ipfs/"; // 替换为您的IPFS网关
}
}
二、关键开发步骤
-
环境准备:
npm install @openzeppelin/contracts # 安装依赖 npx hardhat init # 初始化Hardhat项目 -
元数据规范:
- 创建JSON文件(存储于IPFS):
{ "name": "My NFT", "description": "Unique digital asset", "image": "ipfs://QmXx.../image.png", "attributes": [{"trait_type": "Rarity", "value": "Legendary"}] }
- 创建JSON文件(存储于IPFS):
-
编译与测试:
npx hardhat compile # 编译合约 npx hardhat test # 运行测试脚本
三、OpenSea 部署流程
-
部署到测试网(如Goerli):
- 获取测试ETH:Goerli Faucet
- 部署命令:
npx hardhat run scripts/deploy.js --network goerli
-
验证合约(确保公开可读):
npx hardhat verify --network goerli <合约地址> -
OpenSea 集成:
- 访问:testnets.opensea.io
- 连接钱包(MetaMask)
- 搜索您的合约地址 → 点击"Add to Collection"
- 设置版税(建议5-10%):
Royalty Info→Edit
-
上架NFT:
- 在钱包中调用
mintNFT函数 - 填入参数:
recipient: 您的地址tokenURI: IPFS元数据链接(如ipfs://QmXx.../metadata.json)
- 在钱包中调用
四、常见问题解决
-
OpenSea 不显示NFT:
- 检查元数据是否公开访问
- 确认合约已实现
tokenURI()函数 - 等待区块确认(可能需要1小时)
-
Gas 优化技巧:
- 使用
ERC721A标准(批量铸造节省Gas) - 部署前估算Gas:
hardhat-gas-reporter
- 使用
-
元数据更新:
// 添加此函数(需继承ERC721URIStorage) function updateTokenURI(uint256 tokenId, string memory newURI) public onlyOwner { _setTokenURI(tokenId, newURI); }
提示:主网部署前务必完成:
- 全面安全审计(推荐使用Slither)
- 设置合约冻结开关(防范漏洞)
- 预留元数据更新权限
五、资源推荐
- IPFS 存储:Pinata
- 测试网浏览器:Goerli Etherscan
- OpenSea 文档:开发者中心
通过此流程,您将在24小时内完成从编码到OpenSea上线的全流程。实际部署时建议使用Hardhat+Alchemy节点服务,确保稳定性。

1766

被折叠的 条评论
为什么被折叠?



