NFT 开发:Solidity 写 ERC-721 合约 + OpenSea 部署

NFT 开发:Solidity 写 ERC-721 合约 + OpenSea 部署指南

一、ERC-721 合约开发(Solidity)

核心组件:

  1. 导入 OpenZeppelin 库(标准化实现)
  2. 实现基础功能
    • 代币铸造
    • 所有权转移
    • 元数据管理
// 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网关
    }
}

二、关键开发步骤
  1. 环境准备

    npm install @openzeppelin/contracts  # 安装依赖
    npx hardhat init                     # 初始化Hardhat项目
    

  2. 元数据规范

    • 创建JSON文件(存储于IPFS):
      {
        "name": "My NFT",
        "description": "Unique digital asset",
        "image": "ipfs://QmXx.../image.png",
        "attributes": [{"trait_type": "Rarity", "value": "Legendary"}]
      }
      

  3. 编译与测试

    npx hardhat compile     # 编译合约
    npx hardhat test        # 运行测试脚本
    

三、OpenSea 部署流程
  1. 部署到测试网(如Goerli):

    • 获取测试ETH:Goerli Faucet
    • 部署命令:
      npx hardhat run scripts/deploy.js --network goerli
      

  2. 验证合约(确保公开可读):

    npx hardhat verify --network goerli <合约地址> 
    

  3. OpenSea 集成

    • 访问:testnets.opensea.io
    • 连接钱包(MetaMask)
    • 搜索您的合约地址 → 点击"Add to Collection"
    • 设置版税(建议5-10%):Royalty InfoEdit
  4. 上架NFT

    • 在钱包中调用mintNFT函数
    • 填入参数:
      • recipient: 您的地址
      • tokenURI: IPFS元数据链接(如ipfs://QmXx.../metadata.json
四、常见问题解决
  1. OpenSea 不显示NFT

    • 检查元数据是否公开访问
    • 确认合约已实现tokenURI()函数
    • 等待区块确认(可能需要1小时)
  2. Gas 优化技巧

    • 使用ERC721A标准(批量铸造节省Gas)
    • 部署前估算Gas:hardhat-gas-reporter
  3. 元数据更新

    // 添加此函数(需继承ERC721URIStorage)
    function updateTokenURI(uint256 tokenId, string memory newURI) 
        public onlyOwner {
        _setTokenURI(tokenId, newURI);
    }
    

提示:主网部署前务必完成:

  1. 全面安全审计(推荐使用Slither
  2. 设置合约冻结开关(防范漏洞)
  3. 预留元数据更新权限
五、资源推荐

通过此流程,您将在24小时内完成从编码到OpenSea上线的全流程。实际部署时建议使用Hardhat+Alchemy节点服务,确保稳定性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值