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 获取。需要注意的是,水龙头有每日领取上限,可能需要多次申请才能获得足够的测试代币)。

  • SolidityNFT 有基本理解。可参考 Solidity BasicsNFT Overview 指南获取更多背景知识。

创建 NFT 合约

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

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

  2. 在 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 插件。

  1. 配置部署环境:

    ENVIRONMENT 下拉菜单中选择
    • Injected Provider - Talisman

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

  1. 配置合约参数:

    • 输入 NFT 合约的 owner 地址

    • 点击 Deploy 按钮开始部署

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

    • 检查交易详情

    • 点击 Approve 以确认部署

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

与 NFT 合约交互

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

  1. Deployed / Unpinned Contracts 下找到你的合约

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

铸造 NFT

  • 展开 safeMint 方法

  • 输入接收 NFT 的地址

  • 点击 Transact

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

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

  • 交易哈希

  • 区块高度

  • 事件日志等信息

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值