ERC721以太坊通证实战,从零开始铸造你的第一个NFT

OKX欧易app

OKX欧易app

欧易交易所app是全球排名第一的虚拟货币交易所,注册领取6万元盲盒礼包!

APP下载   官网注册

ERC721以太坊通证实战,从零开始铸造你的第一个NFT

ERC721以太坊通证实战,从零开始铸造你的第一个NFT

在区块链的世界里,NFT(非同质化代币)无疑是最炙手可热的概念之一,它赋予了数字资产独一无二的稀缺性和所有权,从艺术品、收藏品到游戏道具、房产证明,应用场景层出不穷,而ERC721,作为以太坊上首个实现NFT标准的智能合约接口,正是这一切的基石,本文将带你进入ERC721以太坊通证实战,从概念到代码,一步步铸造出你的第一个NFT。

理解ERC721:什么是NFT的“身份证”?

在深入实战之前,我们首先要明白ERC721到底是什么。

  • ERC (Ethereum Request for Comments):以太坊改进提案,类似于以太坊上的“技术标准”。
  • 721:这是一个特定的提案编号。
  • 核心特性:与同质化代币(如ERC20的以太币或SHIB,每个代币完全相同)不同,ERC721代币是独一无二的,每个代币都有一个独特的ID,这意味着即使它们来自同一个智能合约,彼此之间也不可互换,就像你钱包里的每一张钞票(同质化)和你的身份证(非同质化)一样。

ERC721标准定义了一系列接口(Interface)和事件(Event),确保了不同NFT项目之间的互操作性和兼容性,关键接口包括:

  • ownerOf(uint256 tokenId):查询某个ID的NFT当前所有者。
  • balanceOf(address owner):查询某个地址拥有的NFT数量。
  • transferFrom(address from, address to, uint256 tokenId):转移NFT所有权。
  • approve(address to, uint256 tokenId):授权另一个地址转移你的NFT。
  • getApproved(uint256 tokenId):获取被授权的地址。
  • setApprovalForAll(address operator, bool approved):批量授权一个地址管理你所有的NFT。

关键事件包括:

  • Transfer(address indexed from, address indexed to, uint256 indexed tokenId):NFT转移事件。
  • Approval(address indexed owner, address indexed approved, uint256 indexed tokenId):NFT授权事件。

ERC721通证实战准备:环境与工具

要开始ERC721的通证实战,你需要准备以下环境和工具:

  1. 以太坊钱包:如MetaMask,用于管理你的私钥、与以太坊网络交互、支付Gas费。
  2. 测试网ETH:为了在测试网络上部署合约和进行交易,你需要免费的测试网ETH(如Goerli测试网的ETH),可以从水龙头(Faucet)获取。
  3. 集成开发环境(IDE):推荐使用 Remix IDE,它是一个基于浏览器的Solidity开发环境,对初学者非常友好,无需本地配置。
  4. Solidity基础知识:了解Solidity语言的基本语法,如合约结构、变量、函数修饰器(如public, external, view, payable)等。

实战步骤一:编写ERC721智能合约

我们将使用OpenZeppelin库,这是一个提供安全、审计过的智能合约标准的开源库,可以大大减少我们的开发风险和成本。

  1. 打开Remix IDE:访问 remix.ethereum.org。

  2. 创建新文件:在左侧文件浏览器中,点击“Create New File”,命名为MyNFT.sol。

  3. 引入OpenZeppelin ERC721合约:

    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;
    import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
    import "@openzeppelin/contracts/utils/Counters.sol";
    import "@openzeppelin/contracts/access/Ownable.sol";
    contract MyNFT is ERC721 {
        using Counters for Counters.Counter;
        Counters.Counter private _tokenIdCounter;
        constructor(string memory baseTokenURI) ERC721("MyNFT", "MNFT") {
            _baseTokenURI = baseTokenURI;
        }
        // 函数:铸造一个新的NFT
        function mintNFT(address to, string memory tokenURI) public onlyOwner {
            uint256 tokenId = _tokenIdCounter.current();
            _safeMint(to, tokenId);
            _setTokenURI(tokenId, tokenURI);
            _tokenIdCounter.increment();
        }
        // 可选:实现tokenURI函数,用于返回NFT的元数据URI
        function _baseTokenURI() internal view override returns (string memory) {
            return _baseTokenURI;
        }
        string private _baseTokenURI;
        // 可选:设置基础URI
        function setBaseTokenURI(string memory baseTokenURI) public onlyOwner {
            _baseTokenURI = baseTokenURI;
        }
    }

    代码解释:

    • import:引入了OpenZeppelin的ERC721基础合约、计数器工具和Ownable(所有权)合约。
    • contract MyNFT is ERC721:我们的MyNFT合约继承自ERC721。
    • constructor:构造函数,初始化NFT的名称("MyNFT")和符号("MNFT")。baseTokenURI是NFT元数据的基础URI。
    • mintNFT:核心铸造函数,只有合约所有者(onlyOwner)可以调用,它接收接收地址to和NFT的元数据URItokenURI,使用_safeMint安全铸造,并设置元数据。
    • _tokenIdCounter:用于生成唯一的NFT ID。
    • _baseTokenURI和setBaseTokenURI:用于管理和设置NFT元数据的基础路径。
  4. 编译合约:

    • 在Remix左侧,点击“Solidity Compiler”图标(第二个)。
    • 选择编译器版本(建议与代码中pragma solidity指定的版本兼容,如0.8.20)。
    • 点击“Compile MyNFT.sol”,确保没有编译错误。

实战步骤二:部署智能合约

  1. 连接钱包:
    • 在Remix左侧,点击“Deploy & Run Transactions”图标(第三个)。
    • 在“ENVIRONMENT”下拉菜单中,选择“Injected Provider - MetaMask”,这将连接你的MetaMask钱包。
    • 确保MetaMask切换到了测试网络(如Goerli)。
  2. 部署合约:
    • “CONTRACT”下拉菜单会自动选择我们刚刚编译的MyNFT。
    • 在“Deploy”按钮下方的输入框中,你需要输入baseTokenURI,你可以输入ipfs://YourBaseCID/(这里需要你提前将元数据文件上传到IPFS,并获取基础CID),如果是测试,可以先输入一个简单的字符串,如"https://my-nft-metadata.com/"。
    • 点击“Deploy”按钮。
    • MetaMask会弹出一个交易确认窗口,显示Gas费等信息,确认交易。
    • 等待几秒钟,交易被打包后,你会在Remix的日志中看到合约部署成功的消息,并显示合约地址。恭喜!你的ERC721 NFT合约已经部署到以太坊测试网了!

实战步骤三:铸造你的第一个NFT

  1. 调用mintNFT函数:

    • 确保在“Deploy & Run Transactions”界面,并且刚部署的合约已经显示在“DEPLOYED CONTRACTS”列表中。
    • 展开MyNFT合约的接口。
    • 找到mintNFT函数。
    • 在to输入框中,输入你想要接收NFT的地址(可以是你的MetaMask地址)。
    • 在tokenURI输入框中,输入具体这个NFT的元数据URI,如果你有一个名为nft1.json的元数据文件,并上传到了IPFS,其URI可能是ipfs://YourBaseCID/nft1.json,或者,如果你有图片的直接链接,也可以使用(但通常推荐使用JSON元数据文件,包含图片描述、属性等信息)。
    • 点击mintNFT按钮。
    • MetaMask会再次弹出交易确认窗口,确认并支付Gas费。
    • 等待交易成功。
  2. 验证NFT是否铸造成功:

    • 通过区块链浏览器:将你的合约地址输入到以太坊测试网浏览器(如 Etherscan Goerli)中,查看合约的Transfer事件,或者直接查询你地址持有的代币。
    • 通过钱包:在MetaMask中,虽然默认不显示ERC721代币,但你可以添加自定义代币(通过合约地址和NFT的 decimals 通常为 0),或者使用支持NFT的钱

本文来自用户投稿,不代表币大大立场,如若转载,请注明出处:https://czxurui.com/jys/235390.html

上一篇 2026年06月20日
下一篇 2026年06月20日

相关推荐

  • 以太坊是哪家公司的?揭开其背后的组织架构与去中心化本质

    以太坊是哪家公司的?揭开其背后的组织架构与去中心化本质 在区块链领域,以太坊(Ethereum)作为全球第二大加密货币(仅次于比特币)和最重要的智能合约平台,常被误认为是由某家公司“拥有”或“控制”,以太坊并非任何一家企业的私有财产,而是一个由全球开发者、社区成员、

    2026-11-11 16:10:02
    1 0
  • 与以太坊EVM兼容,解锁区块链生态互操作性的关键密码

    与以太坊EVM兼容,解锁区块链生态互操作性的关键密码 在区块链行业快速发展的今天,“与以太坊EVM兼容”已成为一个高频词汇,无论是新公链、 Layer2解决方案,还是企业级区块链项目,纷纷以“EVM兼容”作为核心卖点之一,究竟什么是“与以太坊EVM兼容”?它为何如此重要?本文

    2026-11-11 16:10:02
    2 0
  • 当以太坊遇上啫啫煲,一场区块链与海鲜的硬核盛宴

    当以太坊遇上啫啫煲,一场区块链与海鲜的硬核盛宴 标题里的“混搭哲学”:不止是食物,更是一场文化实验 “以太坊海鲜啫啫煲套餐”——这个听起来像“程序员深夜食堂”的奇特组合,藏着当代都市人对“科技感”与“烟火气”的双重渴望,以太坊,代表着区块链技术的去中心化、智

    2026-11-11 16:10:02
    2 0
  • 以太坊价格最新动态,市场波动与未来展望

    以太坊价格最新动态,市场波动与未来展望 以太坊(Ethereum)作为全球第二大加密货币,其价格走势一直是投资者和行业关注的焦点,截至最新数据,以太坊价格呈现震荡整理态势,不同交易平台报价略有差异,整体区间在3200美元至3500美元之间波动(具体价格以实时交易为准),某

    2026-11-11 14:10:01
    2 0
  • 挖以太坊588显卡神卡再审视,N卡阵营的昔日王者与当下抉择

    挖以太坊588显卡神卡再审视,N卡阵营的昔日王者与当下抉择 在加密货币挖矿的浪潮中,以太坊曾被誉为“显卡挖矿的黄金赛道”,而AMD显卡凭借其高流宽数优势长期霸占主流地位,在N卡阵营中,有一款显卡凭借独特的性价比和挖矿表现,被矿工们亲切地称为“588神卡”——它并非AMD的

    2026-11-11 14:10:01
    3 0
  • 以太坊多少钱一平方?当加密货币撞上房地产的奇妙幻想

    以太坊多少钱一平方?当加密货币撞上房地产的奇妙幻想 在数字世界的喧嚣与现实的钢筋水泥之间,总有一些天马行空的问题,它们像跨越次元的桥梁,连接着两个看似毫不相关的领域。“以太坊多少钱一平方?”——这个问题,正是这样一个有趣的脑洞,它不是一个严肃的投资咨询,而是

    2026-11-11 12:10:01
    2 0

发表回复

8206

评论列表(0条)

    暂无评论

binance币安交易所
已有2000万用户加入币安交易所

立即下载