原文作者: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/
1077

被折叠的 条评论
为什么被折叠?



