欢迎光临
我们一直在努力

Polkadot Hub上部署ERC-721 NFT只要5分钟

原文作者:PaperMoon团队

非同质化代币(Non-Fungible Tokens,NFT)是一种独一无二的数字资产,常用于数字艺术、收藏品、游戏以及身份验证等场景。Polkadot Hub 通过 PolkaVM 支持以太坊兼容的智能合约,使 NFT 的部署变得简单直接。

本教程将指导你如何使用 Polkadot Remix IDE(一个基于 Web 的开发环境),在 Polkadot Hub 测试网 上部署一个 ERC-721 NFT 合约。为确保安全性与标准兼容性,示例合约基于 OpenZeppelin 提供的 NFT 合约实现。

前置条件

在开始之前,请确保你已经具备以下条件:

  • 已安装 Talisman 钱包,并连接到 Polkadot Hub 测试网。更多信息可参考 Connect to Polkadot 指南。

  • 一个已充值的账户,账户中需有一定数量的 PAS 代币(可通过 Faucet 获取。需要注意的是,水龙头有每日领取上限,可能需要多次申请才能获得足够的测试代币)。

  • 对 Solidity 和 NFT 有基本理解。可参考 Solidity Basics 和 NFT Overview 指南获取更多背景知识。

创建 NFT 合约

按照以下步骤创建 NFT 合约:

  • 打开 Polkadot Remix IDE。链接:https://remix.polkadot.io/

  • 在 contracts 文件夹下点击 Create new file,将合约命名为 MyNFT.sol。

  • 接着,将以下 NFT 合约代码粘贴到编辑器中。

    MyNFT.sol

    // SPDX-License-Identifier: MIT
    // Compatible with OpenZeppelin Contracts ^5.0.0
    pragma solidity ^0.8.22;

    import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
    import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";

    contract MyToken is ERC721, Ownable {
    uint256 private _nextTokenId;

    constructor(address initialOwner)
    ERC721("MyToken", "MTK")
    Ownable(initialOwner)
    {}

    function safeMint(address to) public onlyOwner {
    uint256 tokenId = _nextTokenId++;
    _safeMint(to, tokenId);
    }
    }

    代码关键组成说明

    合约导入
    • ERC721.sol:非同质化代币的基础合约,实现了转移、授权等核心 NFT 功能。
    • Ownable.sol:提供基础的权限控制,确保只有合约所有者才能执行铸造等敏感操作。
    构造函数参数
    • initialOwner:设置合约的管理员地址。

    • my token:NFT系列的完整名称

    • "MTK":NFT 在钱包和市场中显示的代币符号。

    关键函数
    • _safeMint(to, tokenId):

      ERC721 提供的内部函数,用于安全地铸造 NFT。

      • 会检查接收地址是否支持 ERC721

      • _nextTokenId 用于自动生成递增且唯一的 Token ID

      • onlyOwner 修饰符限制只有合约所有者才能铸造 NFT

    继承的 ERC-721 标准函数

    合约还继承了一整套标准 ERC-721 接口,保证在不同平台、钱包和 NFT 市场中的互操作性,包括:

    • transferFrom(address from, address to, uint256 tokenId)

      将指定 NFT 从一个地址转移到另一个地址

    • safeTransferFrom(address from, address to, uint256 tokenId)

      带安全检查的 NFT 转移,防止资产丢失

    • approve(address to, uint256 tokenId)

      授权某个地址转移指定 NFT

    • setApprovalForAll(address operator, bool approved)

      授权某个地址管理该用户的全部 NFT

    • balanceOf(address owner)

      返回某地址拥有的 NFT 数量

    • ownerOf(uint256 tokenId)

      返回指定 NFT 的当前所有者

    编译合约

    编译阶段会将 Solidity 源代码转换为可部署到区块链上的字节码。在此过程中,编译器会:

    • 检查语法错误

    • 验证类型安全

    • 生成区块链可执行的机器指令

    操作步骤如下:

    1. 从左侧面板选择 Solidity Compiler 插件。

    2. 点击 Compile MyNFT.sol。

    3. 如果编译成功,Solidity Compiler 图标上会显示一个绿色对勾。

    部署合约

    部署是将编译后的合约上传到区块链并实例化的过程,使其可以被交互。部署时需要完成以下配置:

    1. 从左侧面板选择 Deploy & Run Transactions 插件。

  • 配置部署环境:

    在 ENVIRONMENT 下拉菜单中选择

    • Injected Provider – Talisman

  • 在 ACCOUNT 下拉菜单中选择用于部署的账户

  • 配置合约参数:

    • 输入 NFT 合约的 owner 地址

    • 点击 Deploy 按钮开始部署

  • Talisman 钱包会弹出交易确认窗口:

    • 检查交易详情

    • 点击 Approve 以确认部署

  • 在 Polkadot Hub 测试网上部署合约需要使用 PAS 代币 支付 Gas 费用。请确保你的 Talisman 账户中有足够的 PAS(可通过 Faucet 获取)。Gas 费用用于覆盖合约部署与执行所消耗的计算资源。如果部署成功,你会在终端中看到相应的输出信息。

    与 NFT 合约交互

    合约部署完成后,你可以直接在 Remix 中与其交互:

  • 在 Deployed / Unpinned Contracts 下找到你的合约

  • 点击展开即可看到合约提供的所有方法

    铸造 NFT

    • 展开 safeMint 方法

    • 输入接收 NFT 的地址

    • 点击 Transact

    • 在 Talisman 弹窗中点击 Approve 确认交易

    如果交易成功,终端会显示交易详情,包括:

    • 交易哈希

    • 区块高度

    • 事件日志等信息

    原文链接:https://docs.polkadot.com/tutorials/smart-contracts/deploy-nft/

    赞(0)
    未经允许不得转载:171主机测评 » Polkadot Hub上部署ERC-721 NFT只要5分钟
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址