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日

相关推荐

  • 以太坊每年价格列表,加密市场变迁的缩影

    以太坊每年价格列表,加密市场变迁的缩影 以太坊作为全球第二大加密货币,其价格走势不仅是市场情绪的晴雨表,更折射出区块链技术发展的脉络,回顾其历年价格表现,能清晰看到这个“世界计算机”从诞生到成熟的成长轨迹。 2015年以太坊通过ICO众筹诞生,初始发行价约0.31美元

    2026-09-29 19:30:01
    2 0
  • 以太坊价格行情多少美元?最新动态与市场解析

    以太坊价格行情多少美元?最新动态与市场解析 截至最新数据,以太坊(ETH)的价格行情受多重因素影响,呈现动态波动态势,以2024年10月为例,以太坊价格在2500美元至3000美元区间震荡,具体数值需参考实时交易平台数据,CoinMarketCap等权威平台显示,ETH当前价格约为2780美元

    2026-09-29 19:30:01
    2 0
  • 以太坊PoS模式对价格的影响,短期波动与长期价值的博弈

    以太坊PoS模式对价格的影响,短期波动与长期价值的博弈 自2022年9月完成“合并”(The Merge)从工作量证明(PoW)转向权益证明(PoS)后,以太坊的共识机制变革始终是市场关注的焦点,这一转变不仅重塑了网络的安全性与能耗逻辑,更对ETH的价格形成了多维度影响,其走势可从短

    2026-09-29 19:30:01
    2 0
  • 关键节点与多重考量,以太坊突破3500美元后能否迎来强势行情?

    关键节点与多重考量,以太坊突破3500美元后能否迎来强势行情? 加密货币市场备受关注的焦点之一便是以太坊(ETH)的价格走势,作为市值第二大的加密货币,以太坊的每一次关键突破都牵动着市场的神经。“3500美元”这一心理关口和技术位的重要性不言而喻,当以太坊价格成功站上

    2026-09-29 19:30:01
    2 0
  • 以太坊2015年价格图,从零到一的启程与早期波动

    以太坊2015年价格图,从零到一的启程与早期波动 2015年,加密货币市场仍处于萌芽阶段,而以太坊(Ethereum)的诞生为行业注入了全新变量,作为全球第二大加密货币,以太坊的价格轨迹在诞生之初便充满了探索性与不确定性,其2015年的价格图不仅记录了早期生态的稚嫩,更预示着智

    2026-09-29 19:30:01
    2 0
  • 币安Web3钱包资产转移至以太坊钱包,详细操作指南

    币安Web3钱包资产转移至以太坊钱包,详细操作指南 随着Web3生态的快速发展,用户常需在不同区块链钱包间转移资产,币安Web3钱包(原BNB Smart Chain钱包)作为多链支持的钱包,可将资产转移至以太坊钱包,操作流程简单,但需注意细节以保障安全,以下是具体步骤及注意事项: 前

    2026-09-29 19:30:01
    2 0

发表回复

8206

评论列表(0条)

    暂无评论

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

立即下载